Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.62 Mб
Скачать

Конфликтная упорядочиваемость

Рассмотрим тип упорядочиваемости, которая называется конфликтной упорядочиваемостъю. В конфликтно упорядочиваемом графике порядок выполнения любых конфликтующих операций соответствует их размещению в последовательном графике. Согласно правилу записи, подчиняющейся ограничениям (которое гласит, что транзакция должна обновлять элемент данных исходя из его прежнего значения, которое было прочитано транзакцией в самом начале), для проверки конфликтной упорядочиваемости можно использовать граф предшествования (или граф упорядочения). Для графика S граф предшествования представляет собой направленный граф G=(N,E), состоящий из множества вершин N, множества направленных ребер Е и формируемый следующим образом:

  • Создается вершина, соответствующая каждой из транзакций.

  • Создаются направленные ребра Ті →Тj, если транзакция Тj считывает значение элемента, записанного транзакцией Тi.

  • Создаются направленные ребра Ті → Тj, если транзакция Тj записывает значение в элемент данных после того, как он был считан транзакцией Ті.

  • Создаются направленные ребра Ті → Тj, если транзакция Тj записывает значение в элемент данных после того, как он был записан транзакцией Тi.

Если в графе предшествования, соответствующем графику S, существует ребро Ті → Тj, то в любом последовательном графике S’, эквивалентном графику S, транзакция Ті должна предшествовать транзакции Тj.

Если граф предшествования содержит циклы, то соответствующий ему график не является конфликтно упорядочиваемым.

Упорядочиваемость по просмотру

Существует и несколько других типов упорядочиваемости, которые позволяют сформулировать менее строгое определение эквивалентности графиков, чем то, что предусмотрено в случае конфликтной упорядочиваемости. Одно из этих менее строгих определений называют упорядочиваемостъю по просмотру. Два графика S1 и S2, состоящие из одних и тех же операций, входящих в состав n транзакций T1,T2 …Tn, являются эквивалентными по просмотру, если соблюдаются следующие три условия.

  • Для каждого элемента данных х: если транзакция Tі считывает первоначальное значение х в графике S1 эта же транзакция Tі должна считывать то же первоначальное значение х и в графике S2.

  • Для каждой операции чтения элемента данных х транзакцией Tі в графике S1: если считанное значение элемента х было записано транзакцией Tj, то и в графике S2 транзакция Tі должна считывать значение элемента х, записанное транзакцией Tj.

  • Для каждого элемента данных х: если в графике S1 последняя операция записи значения х была выполнена транзакцией Tі, эта же транзакция должна выполнять последнюю запись значения элемента данных х и в графике S2.

График, упорядочиваемый по просмотруэто график, который эквивалентен по просмотру некоторому последовательному графику.

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

Слепая записьзапись, при которой не соблюдается правило записи, подчиняющейся ограничениям, описанным выше.

В общем случае проверка того, является ли график упорядочиваемым по просмотру, относится к классу NP-полных задач (комбинаторных задач с нелинейной полиномиальной оценкой числа вариантов), поэтому маловероятно, что когда-то удастся найти вполне эффективный алгоритм ее решения.

На практике графики не проверяются в СУБД на упорядочиваемость. Это было бы нецелесообразно, поскольку чередование операций параллельно выполняющихся транзакций определяется операционной системой. Вместо этого в СУБД используются специальные протоколы, позволяющие создавать упорядочиваемые графики.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]