Базы данных. Вводный курс

Проблема фантомов


К более тонким проблемам изолированности транзакций относится так называемая проблема кортежей-«фантомов», приводящая к ситуациям, которые также противоречат изолированности пользователей. Рассмотрим сценарий, показанный на рис. 13.4.


Рис. 13.4. Проблема фантомов

В момент времени t1

транзакция T1

выполняет оператор выборки кортежей таблицы Tab

с условием выборки S

(т.е. выбирается часть кортежей таблицы Tab, удовлетворяющих условию S). До завершения транзакции T1

в момент времени t2

>

t1

транзакция T2

вставляет в таблицу Tab

новый кортеж r, удовлетворяющий условию S, и успешно завершается. В момент времени t3

>

t2

транзакция T1

повторно выполняет тот же оператор выборки, и в результате появляется кортеж, который отсутствовал при первом выполнении оператора.

Конечно, такая ситуация противоречит идее изолированности транзакций и может возникнуть даже на третьем уровне изолированности транзакций. Чтобы избежать появления кортежей-фантомов, требуется более высокий «логический» уровень изоляции транзакций. Идеи требуемого механизма (предикатные синхронизационные блокировки) появились также еще во время выполнения проекта System R, но в большинстве систем не реализованы.



Содержание раздела