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

Временные метки также используются для идентификации версий данных при чтении и модификации — каждая версия получает временную метку той транзакции, которая ее записала.
Планировщик не только следит за порядком выполнения действий транзакций, но также отвечает за трансформацию операций над данными в операции над версиями — каждая операция вида «прочитать элемент данных х», должна быть преобразована планировщиком в операцию: «прочитать версию у элемента данных х».
Временную метку, полученную транзакцией ti в начале ее работы, будем обозначать как ts(ti), операцию чтения транзакцией ti элемента данных х как ri(x).
Для обозначения того, что транзакция ti читает версию элемента данных х, созданную транзакцией tk, будем писать ri(xk), для обозначения того, что транзакция ti записывает версию элемента данных х, будем использовать запись wi(x).
Опишем алгоритм работы планировщика MVTO.
Планировщик преобразует операцию ri(x) в операцию ri(xk), где хк — это версия элемента х, помеченная наибольшей временной меткой
ts(tk), такой что ts(tk) <= ts(ti).
1.Операция wi(x) обрабатывается планировщиком следующим образом: a) если планировщик уже обработал действие вида rj(xk), такое что
ts(tk) < ts(ti) < ts(tj), то операция wi(x) отменяется, a ti откатывается; b) в противном случае wi(x) преобразуется в yvi(xi).
2.
Завершение транзакции ti (commit) откладывается до того момента, когда завершатся все транзакции, записавшие версии данных, прочитанные ti.
Последний шаг нужен только в том случае, когда хотят предотвратить «грязное» чтение.
На рисунке 25 приведен пример работы планировщика MVTO.
Взаимодействие транзакций tl и
t2 отличным образом иллюстрирует плюсы использования версий.
В случае подобного плана выполнения транзакций при отсутствии версионности получился бы классический случай чтения
несогласованных данных.
Однако в нашем примере эта ситуация вполне 63
[стр. 133]

порядком временных меток, которые получают транзакции во время старта.
Временные метки также используются для идентификации версий данных при чтении и модификации — каждая версия получает временную метку той транзакции, которая ее записала.
Планировщик не только следит за порядком выполнения действий транзакций, но также отвечает за трансформацию операций над данными в операции над версиями — каждая операция вида «прочитать элемент данных х», должна быть преобразована планировщиком в операцию: «прочитать версию у элемента данных х».
Временную метку, полученную транзакцией ti в начале ее работы, будем обозначать как ts(ti), операцию чтения транзакцией ti элемента данных х как ri(x).
Для обозначения того, что транзакция ti читает версию элемента данных х, созданную транзакцией tk, будем писать ri(xk), для обозначения того, что транзакция ti записывает версию элемента данных х, будем использовать запись wi(x).
Опишем алгоритм работы планировщика MVTO.
Планировщик преобразует операцию ri(x) в операцию ri(xk), где хк — это версия элемента х, помеченная наибольшей временной меткой
ls(tk), такой что ls(tk) <= ts(ti).
1.
Операция wi(x) обрабатывается планировщиком следующим образом: a) если планировщик уже обработал действие вида rj(xk), такое что
ls(tk) < ts(ti) < ts(tj), то операция wi(x) отменяется, a ti откатывается; b) в противном случае wi(x) преобразуется в wi(xi).
2.
Завершение транзакции ti (commit) откладывается до того момента, когда завершатся все транзакции, записавшие версии данных, прочитанные ti.
Последний шаг нужен только в том случае, когда хотят предотвратить «грязное» чтение.
На рисунке 25 приведен пример работы планировщика MVTO.
Взаимодействие транзакций tl и
/2 отличным образом иллюстрирует плюсы использования версий.
В случае подобного плана выполнения транзакций при отсутствии версионности получился бы классический случай чтения

[Back]