ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ

       

Неповторяемое считывание


Транзакция A дважды читает одну и ту же строку. Между этими чтениями вклинивается транзакция B, которая изменяет значения в строке.

Транзакция A

Время

Транзакция B



Неповторяемое считывание

Чтение
---
---
Чтение
---
Запись
---
Фиксация транзакции
Повторное чтение
---
Фиксация транзакции
---
 

Транзакция A ничего не знает о существовании транзакции B, и, т.к. сама она не меняет значение в строке, то ожидает, что после повторного чтения значение будет тем же самым.

Результат. Транзакция A работает с данными, которые, с точки зрения транзакции A, самопроизвольно изменяются.


Транзакция A дважды читает одну и ту же строку. Между этими чтениями вклинивается транзакция B, которая изменяет значения в строке.

Транзакция A

Время

Транзакция B

Все правильно

S-блокировка
- успешна
---
Чтение
---
---
X-блокировка
- отвергается
---
Ожидание…
Повторное чтение
Ожидание…
Фиксация транзакции

(Блокировка снимается)

Ожидание…
---
X-блокировка
- успешна
---
Запись
---
Фиксация транзакции


(Блокировка снимается)

 

Результат. Транзакция B притормозилась до окончания транзакции A. В результате транзакция A дважды читает одни и те же данные правильно. После окончания транзакции A, транзакция B продолжила работу в обычном режиме.



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