RESERVING
Предложение RESERVING
в операторе SET TRANSACTION
резервирует указанные в списке таблицы.Резервирование запрещает другим транзакциям вносить в эти таблицы изменения или (при определённых установках характеристик предложения резервирования) даже читать данные из этих таблиц, в то время как выполняется данная транзакция.Либо, наоборот, в этом предложении можно указать список таблиц, в которые параллельные транзакции могут вносить изменения, даже если запускается транзакция с уровнем изоляции SNAPSHOT TABLE STABILITY
.
В одном предложении резервирования можно указать произвольное количество резервируемых таблиц используемой базы данных.
Если опущено одно из ключевых слов SHARED
или PROTECTED
, то предполагается SHARED
.Если опущено все предложение FOR
, то предполагается FOR SHARED READ
.Варианты осуществления резервирования таблиц по их названиям не являются очевидными.
|
SHARED READ |
SHARED WRITE |
PROTECTED READ |
PROTECTED WRITE |
SHARED READ |
да |
да |
да |
да |
SHARED WRITE |
да |
да |
нет |
нет |
PROTECTED READ |
да |
нет |
да |
нет |
PROTECTED WRITE |
да |
нет |
нет |
нет |
Для транзакции запущенной в режиме изолированности SNAPSHOT
для таблиц, указанных в предложении RESERVING
, в параллельных транзакциях в зависимости от их уровня изоляции допустимы при различных способах их резервирования следующие варианты поведения:
-
SHARED READ
— не оказывает никакого влияния на выполнение параллельных транзакций; -
SHARED WRITE
— на поведение параллельных транзакций с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
не оказывает никакого влияния, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает не только запись, но также и чтение данных из указанных таблиц; -
PROTECTED READ
— допускает только чтение данных из резервируемых таблиц для параллельных транзакций с любым уровнем изолированности, попытка внесения изменений приводит к исключению базы данных; -
PROTECTED WRITE
— для параллельных транзакций с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
запрещает запись в указанные таблицы, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает также и чтение данных из резервируемых таблиц.
Для транзакции запущенной в режиме изолированности SNAPSHOT TABLE STABILITY
для таблиц, указанных в предложении RESERVING
, в параллельных транзакциях в зависимости от их уровня изолированности допустимы при различных способах их резервирования следующие варианты поведения:
-
SHARED READ
— позволяет всем параллельным транзакциям независимо от их уровня изолированности не только читать, но и выполнять любые изменения в резервируемых таблицах (если параллельная транзакция имеет режим доступаREAD WRITE
); -
SHARED WRITE
— для всех параллельных транзакций с уровнем доступаREAD WRITE
и с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
позволяет читать данные из таблиц и писать данные в указанные таблицы, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает не только запись, но также и чтение данных из указанных таблиц; -
PROTECTED READ
— допускает только лишь чтение данных из резервируемых таблиц для параллельных транзакций с любым уровнем изолированности; -
PROTECTED WRITE
— для параллельных транзакций с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
запрещает запись в указанные таблицы, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает также и чтение данных из резервируемых таблиц.
Для транзакции запущенной в режиме изолированности READ COMMITTED
для таблиц, указанных в предложении RESERVING
, в параллельных транзакциях в зависимости от их уровня изоляции допустимы при различных способах их резервирования следующие варианты поведения:
-
SHARED READ
— позволяет всем параллельным транзакциям независимо от их уровня изолированности не только читать, но и выполнять любые изменения в резервируемых таблицах (при уровне доступаREAD WRITE
); -
SHARED WRITE
— для всех транзакций с уровнем доступаREAD WRITE
и с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
позволяет читать и писать данные в указанные таблицы, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает не только запись, но также и чтение данных из указанных таблиц; -
PROTECTED READ
— допускает только чтение данных из резервируемых таблиц для параллельных транзакций с любым уровнем изолированности; -
PROTECTED WRITE
— для параллельных транзакций с уровнями изолированностиSNAPSHOT
иREAD COMMITTED
разрешает только чтение данных и запрещает запись в указанные в данном списке таблицы, для транзакций с уровнем изолированностиSNAPSHOT TABLE STABILITY
запрещает не только изменение данных, но и чтение данных из резервируемых таблиц.
Tip
|
Предложение |