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



 

Уровень изоляции (Isolation level) описывает насколько изменения внесенные транзакцией будут отражены в других, одновременно с данной стартовавших транзакций

ISC_TPB_CONCURRENCY

По умолчанию, после старта транзакции, не могут быть доступны подтвержденные изменения в таблице, сделанные другими, параллельно работающими транзакциями, даже если используется разделяемый доступ к таблице. Такая транзакция имеет уровень изоляции isc_tpb_concurrency, это означает, что другие параллельно работающие транзакции могут иметь параллельный доступ к таблицам. Пример:

  static char isc_tpb[] = {isc_tpb_version3,

                                        isc_tpb_write,

                                        isc_tpb_concurrency};

ISC_TPB_READ_COMMITTED

Второй уровень изоляции,  isc_tpb_read_committed, имеет все преимущества isc_tpb_concurrency и дополнительно позволяет транзакции обращаться к подтвержденным изменениям совершенным другими параллельно работающими транзакциями. Два других параметра, isc_tpb_rec_version, и isc_tpb_no_rec_version, должны использоваться в комбинации с isc_tpb_read_committed. Они предоставляют более гибкое управление для доступа транзакции к подтвержденным изменениям.

  • isc_tpb_no_rec_version, заданное по умолчанию, определяет что транзакция может видеть только самую последнюю версию записи. Если изменение записи продолжается, но не завершено подтверждением, запись не может быть прочитана.

  • isc_tpb_rec_version определяет что транзакция может читать самую последнюю подтвержденную версию записи, даже если самая последняя не подтвержденная версия записи не завершилась и продолжает изменение.

Следующее объявление создает TPB с уровнем изоляции read_committed, и определяет транзакцию которая может читать самую последнюю версию записи.

static char isc_tpb[] = {isc_tpb_version3,

                                      isc_tpb_write,

                                      isc_tpb_read_committed,

                                      isc_tpb_rec_version};

ISC_TPB_CONSISTENCY

InterBase также поддерживает ограничительный уровень изоляции. isc_tpb_consistency не разрешает доступ транзакции к таблицам, если туда производят записи другие транзакции; и также не дает доступа другим транзакциям к таблице в которую производит запись эта транзакция. Этот уровень изоляции предназначен, чтобы гарантировать,  если производятся транзакцией записи в таблицу перед другими одновременно читающими и пишущими транзакциями, то только эта транзакция может изменять данные таблицы. Так как это существенно ограничивает одновременный доступ к таблице, то

isc_tpb_consistency надо использовать осторожно.

В TPB должен быть определен только  один параметр уровня изоляции (и один параметр уточнения, если уровень изоляции - isc_tpb_read_committed). Если определено больше одного параметра, то  более поздние объявления отменяют более ранние.

Если в TPB опущен параметр уровня изоляции то IB ставит транзакции уровень изоляции как  isc_tpb_concurrency.  

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

 

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