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
|
Предложение |