Проблема анализа на противоречивость

Рассмотрим рис. 11.4, на котором показаны две транзакции А и В, оперирующие записями счетов. Транзакция А суммирует остатки на счетах, транзакция В переносит сумму 10 со счета 3 на счет 1. Продуцируемый А результат 110, очевидно, некорректен, и если бы А должна была записать этот результат в базу данных, она оставила бы фактически базу данных в противоречивом состоянии. Будем говорить, что А «видела» противоречивое состояние базы данных и поэтому провела анализ на противоречивость. Отметим различие между данным и предыдущим примером. Здесь нет проблемы зависимости А от незафиксированных изменений, поскольку В фиксирует все произведенные ею обновления прежде, чем А «увидит» запись СЧЕТА 3.

СЧЕТ 1   СЧЕТ 2   СЧЕТ 3
         
     
Транзакция А Время Транзакция В
   
   
FETCH СЧЕТ 1 (40): СУММА == 40 t1
   
FETCH СЧЕТ 2 (50): СУММА = 90 — t2
   
t3 FETCH СЧЕТ 3 (30)
   
t4 UPDATE СЧЕТ 3: 30®20
   
t5 FETCH СЧЕТ 1 (40)
   
t6 UPDATEСЧЕТ 1: 40®50
   
t7 COMMIT
     
FETCH СЧЕТ 3 (20): СУММА=110, а не 120 t8  
       
                 

Рис. 11.4. Транзакция А осуществляет анализ на противоречивость


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: