Перечень действий, которые совершают транзакции
Перечень действий, которые совершают транзакции над объектами, приведен в табл. 11.1.
Рис. 11.10. Пример графа ожиданий транзакций Таблица 11.1. Перечень действий множества транзакций
Время |
Транзакция |
Действие |
||
0 |
Т1 |
Select A |
||
1 |
Т2 |
Select В |
||
2 |
Т1 |
Select С |
||
3 |
Т4 |
Select D |
||
4 |
Т5 |
Select A |
||
5 |
Т2 |
Select E |
||
6 |
Т2 |
Update E |
||
7 |
ТЗ |
Select F |
||
8 |
Т2 |
Select F |
||
9 |
Т5 |
Update A |
||
10 |
Т1 |
Commit |
||
11 |
Т6 |
Select A |
||
12 |
Т5 |
Commit |
||
13 |
Т6 |
Select С |
||
14 |
Т6 |
Update С |
||
15 |
Т7 |
Select G |
||
16 |
Т8 |
Select H |
||
17 |
Т9 |
Select G |
||
18 |
Т9 |
Update G |
||
Время |
Транзакция |
Действие |
||
19 |
Т8 |
Select E |
||
20 |
Т7 |
Commit |
||
21 |
Т9 |
Select H |
||
22 |
ТЗ |
Select G |
||
23 |
Т10 |
Select A |
||
24 |
Т9 |
Update H |
||
25 |
Т6 |
Commit |
||
26 |
Т11 |
Select С |
||
27 |
Т12 |
Select D |
||
28 |
Т12 |
Select С |
||
29 |
Т2 |
Update F |
||
30 |
Т11 |
Update С |
||
31 |
Т12 |
Select A |
||
32 |
Т10 |
Update A |
||
33 |
Т12 |
Update D |
||
34 |
Т2 |
Select G |
||
35 |
_ |
- |
||
На диаграмме состояний ожидания видно, что транзакции Т9, Т8, Т2 и Т3 образуют цикл. Именно наличие цикла и является признаком возникновения тупиковой ситуации. Поэтому в момент 3 перечисленные транзакции будут заблокированы.
Разрушение тупика начинается с выбора в цикле транзакций так называемой транзакции-жертвы, то есть транзакции, которой решено пожертвовать, чтобы обеспечить возможность продолжения работы других транзакций.
Критерием выбора является стоимость транзакции; жертвой выбирается самая дешевая транзакция. Стоимость транзакции определяется на основе многофакторной оценки, в которую с разными весами входят время выполнения, число накопленных захватов, приоритет.