|
|
Уровень
изоляции (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.
Они предоставляют более гибкое управление
для доступа транзакции к подтвержденным
изменениям.
Следующее
объявление создает 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 |