Классика баз данных - статьи

       

Теперь рассмотрим пример работы такого


Теперь рассмотрим пример работы такого планировщика:



Рис 1. Пример работы планировщика MVTO

Взаимодействие транзакций t1 и t2 отличным образом иллюстрирует плюсы использования версий. В случае подобного плана выполнения транзакций при отсутствии версионности мы получили бы классический случай чтения несогласованных данных. Однако в нашем примере эта ситуация вполне приемлема из-за того, что первая транзакция читает «старую» версию элемента данных y. Транзакция t3 ожидает окончания работы t2 перед собственным завершением (на рисунке это показано пунктирной линией). Это происходит потому, что t3 прочитала незавершенную (uncommited) версию x2.

Транзакция t4 является примером “поздней” транзакции изменения (“late” writer). Она создает версию y4, в то время как транзакция t5 (стартовавшая позднее) уже прочитала более раннюю версию y2. То есть транзакция t5 “не видит” некоторых изменений, внесенных t4. Таким образом, сериализация транзакций в порядке получения ими временных меток становится невозможной. Именно поэтому мы вынуждены произвести откат. Это поясняет пункт 2a алгоритма.


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