Перечень действий, которые совершают транзакции
Перечень действий, которые совершают транзакции над объектами, приведен в табл. 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 перечисленные транзакции будут заблокированы.
Разрушение тупика начинается с выбора в цикле транзакций так называемой транзакции-жертвы, то есть транзакции, которой решено пожертвовать, чтобы обеспечить возможность продолжения работы других транзакций.
Критерием выбора является стоимость транзакции; жертвой выбирается самая дешевая транзакция. Стоимость транзакции определяется на основе многофакторной оценки, в которую с разными весами входят время выполнения, число накопленных захватов, приоритет.