Базы данных. Вводный курс

         

образуется еще одна версия объекта


t(Ti) < t(Tn), то операция Wi(o)

не выполняется, а транзакция Ti

откатывается;

в противном случае Wi(o)

преобразуется в Wi(oi), т.е. образуется еще одна версия объекта o.

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

  • Выполнение операции фиксации транзакции Ti

    (COMMIT) откладывается до того момента, когда завершатся все транзакции, записавшие версии данных, прочитанные Ti. Легко видеть, что без соблюдения этого требования не соблюдалось бы свойство долговечности (durability) транзакций, поскольку при откате некоторых транзакций потребовалось бы откатывать и ранее зафиксированные транзакции.

    Преимущества алгоритма MVTO лучше всего иллюстрируются поведением транзакций T1

    и T2 (см. рис. 13.8). При использовании блокировок между ними возник бы синхронизационный тупик, а при использовании обычного метода временных меток одна из транзакций подверглась бы откату. Однако при применении версий такие неприятности не возникают из-за того, что первая транзакция читает «старые» версии объектов o

    и ω.



    Рис. 13.8. Пример работы алгоритма MVTO

    Транзакция T3

    ожидает фиксации транзакции T2

    перед своим собственным завершением (на рис. 13.8 это показано пунктирной линией). Это происходит потому, что транзакция T3

    прочитала версию o2

    объекта o, образованную еще не зафиксированной транзакцией.

    Транзакция T4

    пытается создать версию ω4

    объекта ω

    после того, как еще не зафиксированная транзакция T5

    (начавшаяся позже) уже прочитала более раннюю версию ω4. Поэтому транзакция T5

    не сможет «увидеть» изменения объекта ω, произведенные транзакцией T4. Следовательно, сериализация транзакций в порядке получения ими временных меток становится невозможной, и приходится произвести откат транзакции T4.

    Итак, основными преимуществами алгоритма MVTO является отсутствие задержек и откатов при выполнении операций чтения, а основным недостатком – возможность возникновение каскадных откатов транзакций при выполнении операций записи.Кроме того, в базе данных может накапливаться произвольное число версий одного и того же объекта, и определение того, какие версии больше не требуются, является серьезной технической проблемой.


    Содержание раздела