Введение в системы управления базами данных




Таблица 14



Таблица 14


Транзакция A Время Транзакция B Транзакция A дважды читает один и тот же набор строк
Все правильно
S-блокировка таблицы (с целью потом блокировать строки) - успешна Таблица 14 ---
S-блокировка строк, удовлетворяющих условию Таблица 14.
(Заблокировано n строк)
Таблица 14 ---
Выборка строк, удовлетворяющих условию Таблица 14.
(Отобрано n строк)
Таблица 14 ---
--- Таблица 14 IX-блокировка таблицы (с целью потом вставлять строки) - отвергается из-за конфликта с S-блокировкой, наложенной транзакцией A
--- Таблица 14 Ожидание…
--- Таблица 14 Ожидание…
S-блокировка строк, удовлетворяющих условию Таблица 14.
(Заблокировано n строк)
Таблица 14 Ожидание…
Выборка строк, удовлетворяющих условию Таблица 14.
(Отобрано n строк)
Таблица 14 Ожидание…
Фиксация транзакции - блокировки снимаются Таблица 14 Ожидание…
--- Таблица 14 IX-блокировка таблицы (с целью потом вставлять строки) - успешна
--- Таблица 14 Вставка новой строки, удовлетворяющей условию Таблица 14.
--- Таблица 14 Фиксация транзакции
   

Результат. Проблема фиктивных элементов (фантомов) решается, если транзакция A использует преднамеренную S-блокировку или более сильную.

Замечание. Т.к. транзакция A собирается только читать строки таблицы, то минимально необходимым условием в соответствии с протоколом преднамеренных блокировок является преднамеренная IS-блокировка таблицы. Однако этот тип блокировки не предотвращает появление фантомов. Таким образом, транзакцию A можно запускать с разными уровнями изолированности - предотвращая или допуская появление фантомов. Причем, оба способа запуска соответствуют протоколу преднамеренных блокировок для доступа к данным.







Начало  Назад  Вперед



Книжный магазин