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

       

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


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

Транзакция A

Время

Транзакция B

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

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

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

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


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

Транзакция A

Время

Транзакция B

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

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

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

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


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

 

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



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