Базы данных - модели, разработка, реализация



         

Параллельное выполнение транзакций - часть 8


Перечень действий, которые совершают транзакции над объектами, приведен в табл. 11.1.

237

Рис. 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 Т3 Select F
8 Т2 Select F
9 Т5 Update A
10 T7 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

238

Время Транзакция Действие
19 Т8 Select E
20 Т7 Commit
21 Т9 Select H
22 Т3 Select G
23 Т10 Select A
24 T9 Update H
25 Т6 Commit
26 T11 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 - -

На графе объекты блокировки помечены типами блокировок, S - нежесткая (разделяемая) блокировка, X - жесткая (эксклюзивная) блокировка.

На диаграмме состояний ожидания видно, что транзакции Т9, Т8, Т2 и Т3 образуют цикл. Именно наличие цикла и является признаком возникновения тупиковой ситуации. Поэтому в момент 3 перечисленные транзакции будут заблокированы.

Разрушение тупика начинается с выбора в цикле транзакций так называемой транзакции-жертвы, то есть транзакции, которой решено пожертвовать, чтобы обеспечить возможность продолжения работы других транзакций.

Критерием выбора является стоимость транзакции; жертвой выбирается самая дешевая транзакция. Стоимость транзакции определяется на основе многофакторной оценки, в которую с разными весами входят время выполнения, число накопленных захватов, приоритет.

После выбора транзакции - жертвы выполняется откат этой транзакции, который может носить полный или частичный характер. При этом, естественно, освобождаются захваты и может быть продолжено выполнение других транзакций.




Содержание  Назад  Вперед