Проверяемый текст
Гаврилов, Евгений Сергеевич. Модельно-алгоритмическая поддержка анализа транзакционной надежности в системах обработки информации и управления (Диссертация 2006)
[стр. 64]

приемлема из-за того, что первая транзакция читает «старую» версию элемента данных у.
Транзакция
t3 ожидает окончания работы t2 перед собственным завершением (пунктирная линия на рис.
3).
Это происходит потому, что t3 прочитала незавершенную версию х2.

tI, rlfrO)__________________________ riy) , W2(x2> ЭД) Й—I---Р——1--------1—Й(х2) гЗ(хО) Й-—i------------н--------■ г4{х2} ^х<г4{у2) w4fy4) И-н--------1——Т— ---1-------Abort г5(у2) г$(х$ 15»—1------1-■ Время Рисунок 3 Пример работы планировщика MVTO.
Транзакция t4 является примером «поздней» транзакции изменения.
Она создает версию у4, в то время как транзакция
t5 (стартовавшая позднее) уже прочитала более раннюю версию у2.
То есть транзакция t5 «не видит» некоторых изменений, внесенных
t4.
Таким образом, сериализация транзакций в порядке получения ими временных меток невозможна — необходим откат (пункт 2а алгоритма).

2.3.
Многоверсионный вариант двухфазного протокола синхронизации Помимо метода временных меток разработан и предложен вариант двухфазного протокола синхронизации транзакций (multiversion two-phase locking protocol, MV2PL), адаптированного для применения в версионной базе данных.
Будем различать три типа версии элемента данных:
• завершенные (commited) — версии, созданные транзакциями, которые уже успешно закончили свою работу; • текущая версия (current) — последняя из завершенных версий; 64
[стр. 134]

несогласованных данных.
Однако в нашем примере эта ситуация вполне приемлема из-за того, что первая транзакция читает «старую» версию элемента данных у.
Транзакция
(3 ожидает окончания работы 12 перед собственным завершением (пунктирная линия на рис.
25).
Это происходит потому, что t3 прочитала незавершенную версию х2.
*
г1(х0) rl(yO) и-—1-------------------------------------------------1— Й(х0)*2(х2)й(у0) \v2(y2) t2-H 1-------1--------1— r3(x2) r3(x0) t3-— 1-----i ----r4(x2) \v4(x4) r4(V2) \v4(y4) И*н 1------1------1-------Abort r5(y2) r5(x0) 6*~i--------i— Время Рис.25 Пример работы планировщика MVTO Транзакция 14 является примером «поздней» транзакции изменения.
Она создает версию у4, в то время как транзакция
/5 (стартовавшая позднее) уже прочитала более раннюю версию у2.
То есть транзакция t5 «не видит» некоторых изменений, внесенных
14.
Таким образом, сериализация транзакций в порядке получения ими временных меток невозможна — необходим откат (пункт 2а алгоритма).

3.3 Многоверсиомный вариант двухфазного протокола синхронизации Помимо метода временных меток разработан и предложен вариант двухфазного протокола синхронизации транзакций (muitiversion two-phase locking protocol, MV2PL), адаптированного для применения в версионной базе данных.
Будем различать три типа версии элемента данных: *
134

[стр.,135]

* • завершенные (commited) — версии, созданные транзакциями, которые уже успешно закончили свою работу; • текущая версия (current) — последняя из завершенных версий; • }^завершенные (uncommited) — версии, созданные транзакциями, которые еще находятся в работе.
В MV2PL планировщик следит за тем, чтобы в каждый момент времени существовало не более одной незавершенной версии.
В зависимости от того, позволяется ли транзакциям читать незавершенные версии данных, различаются два варианта алгоритма: с чтением незавершенных данных и без.
Сначала рассмотрим схему работы MV2PL в предположении, что все версии элементов данных сохраняются в базе.
Затем обсудим вариант этого алгоритма, в котором допускается одновременное существование не более двух версий одного и того же элемента данных.
Все операции, которые обрабатывает планировщик, разделяются на два класса: обычные и финальные операции.
Под финальной операцией понимается последняя операция транзакции перед ее завершением или же сама операция завершения.
Обе интерпретации допустимы.
При этом каждая отдельная операция транзакции обрабатывается следующим образом: 1.
если операция не является финальной, то: а) операция ф ) выполняется незамедлительно; ей сопоставляется последняя из завершенных к данному моменту версий х (или последняя из незавершенных версий х во втором варианте алгоритма); Ь) операция w(x) выполняется только после завершения транзакции, записавшей последнюю версию х.
2.
если операция является финальной для транзакции ti, то она откладывается до тех пор, пока не завершатся: а) все транзакции /у, прочитавшие текущую версию данных, которую должна заменить версия, записанная ti (тем самым устраняется возможность неповторяющегося чтения); Ь) все транзакции tj, которые записали версии, прочитанные ti (это требуется только во втором варианте алгоритма).
135

[Back]