Главная ]
1.3.11.Определение резервирования таблицы
Программирование
Базы данных



 

Обычно транзакции получают определенный доступ к таблицам только когда они непосредственно читают или пишут в таблицы. Параметр резервирования таблицы необязателен и может быть опущен в TPB. Резервирование таблицы (Table reservation) описывает режим доступа и разрешение конфликта блокировок для определенной таблицы которая доступна транзакции. Когда используется резервирование таблицы, таблицы резервируются для специального доступа когда транзакция стартует, а не когда транзакция фактически получит доступ к таблице.  Резервироание таблиц используется в среде, где одновременно существующие транзакции имеют совместный доступ к БД. Существуют следующие цели резервирования.

  • Предотвращение возможных тупиковых ситуаций и конфликтов обновления, которые могут происходить, если блокировки принимаются только там  где они фактически необходимы (поведение по умолчанию).

  • Предусмотрение  зависимой блокировки, блокировок таблиц, на которые можно воздействовать ограничениями целостности и триггерами. Если есть явная зависимость, блокировка не требуется, можно ручаться, что конфликты обновлений не произойдут из-за косвенных конфликтов таблиц.(!!!!!!!!!!!!!!!!!!!!!!!!!!!!)

  • Изменение уровня разделяемого доступа для одной или нескольких таблиц в транзакции. Например, isc_tpb_write транзакция с уровнем изоляции isc_tpb_concurrency может нуждаться в исключительных правах на изменения для отдельной таблицы, и могла бы использовать параметр резервирования, чтобы гарантировать себе единственный доступ для записи в таблицу.

Виды резервирования:

  • - Isc_tpb_shared, isc_tpb_lock_write,  разрешают любой транзакции с режимом доступа isc_tpb_write и уровнями изоляции isc_tpb_concurrency или isc_tpb_read_committed модифицировать данные, в то время как другие транзакции с этими уровнями изоляции и режимом доступа isc_tpb_read могут только читать данные.

  • - Isc_tpb_shared, isc_tpb_lock_read, разрешает любой транзакции читать данные, и любой транзакции с режимом доступа isc_tpb_write изменять данные. Это - наиболее либеральный режим резервирования.

  • - Isc_tpb_protected, isc_tpb_lock_write, не дает другим транзакциям изменять данные. Другие транзакции с уровнями изоляции isc_tpb_concurrency или isc_tpb_read_committed могут читать данные, но только эта транзакция может изменять их.

  • - Isc_tpb_protected, isc_tpb_lock_read, не дает всем транзакциям делать изменения данных, но разрешает всем транзакциям читать данные.

Имя таблицы, которую надо резервировать должно сразу следовать за параметрами резервирования. Например, следующее обьявление TPB  резервирует таблицу, EMPLOYEE, для защищенного доступа  чтения:

static char isc_tpb[] = {isc_tpb_version3,

isc_tpb_write,

isc_tpb_concurrency,

isc_tpb_nowait,

isc_tpb_protected, isc_tpb_lock_read, "EMPLOYEE"};

Несколько таблиц могут быть зарезервированы одновременно. Следующее объявление иллюстрирует, как две таблицы зарезервированы, один для защищенного чтения, другой для защищенной записи:

static char isc_tpb[] = {isc_tpb_version3,

isc_tpb_write,

isc_tpb_concurrency,

isc_tpb_nowait,

isc_tpb_protected, isc_tpb_lock_read, "COUNTRY",

isc_tpb_protected, isc_tpb_lock_write, "EMPLOYEE"};  

<< Назад ] Содержание ] Далее >> ]

 

Дизайн: Piton Alien
Rambler's Top100 Рейтинг@Mail.ru
Сайт создан в системе uCoz