Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_BD_2013-1.doc
Скачиваний:
139
Добавлен:
28.03.2015
Размер:
954.88 Кб
Скачать

53.Понятие плана параллельного выполнения транзакций. Последовательные, непоследовательные и неупорядоченные планы.

Для управления параллельным доступом в СУБД существует два инструмента – планировщик и протокол. Планировщик – часть СУБД которая отвечает за такую последовательность атомарных шагов одновременно выполняющихся транзакций, при которой транзакции не оказывают взаимного влияния.

Последовательность атомарных действий транзакций называется планом совместного выполнения транзакций. Основным требованием к плану является сохранение порядка атомарных шагов транзакции при параллельном выполнении.

План называется последовательным, если в нем операции каждой из транзакций выполняются строго последовательно и не могут чередоваться с операциями, выполняющимися в других транзакциях. Таким образом, в последовательном плане транзакции выполняются строго поочередно (пока не закончилась одна транзакция вторая не начнется), следовательно, транзакции не оказывают ни какого взаимного влияния.

Непоследовательный плана – это план в котором чередуются операции из некоторого набора одновременно выполняемых транзакций. Непоследовательный плана является корректным, если он приводит к получению тех же результатов, которые получаются при использовании некоторого последовательного плана. Такой план называется упорядоченным. /*Все три проблемы параллельного доступа были обусловлены неупорядоченностью плана выполнения транзакций. */

Пример. Перевод денежных средств между счетами А, В, С. Две транзакции.

T1: read (A); A:=A-10; write(A); read(B); B:=B+10; write (B);

T2: read (B); B:=B-20; write(B); read(C); C:=C+20; write (C);

Корректность работы заключается в сохранении постоянного значения суммой А+В+С.

Первая таблица соответствует последовательному плану, так как все шаги каждой транзакции выполняются строго последовательно. Вторая таблица – корректный непоследовательный план, так его выполнение приводит к тому же результату, что и приведенный в первой таблице последовательный, то есть не нарушается заданное равенство суммы. Третья таблица соответствует некорректному непоследовательному плану, так как транзакция 2 читает значение элемента В, еще до того, как Т1 запишет корректное, значение В, то есть нарушается заданная сумма.

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

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

В конфликтно упорядоченном плане порядок выполнения любых конфликтных операций соответствует их размещению в последовательном плане.

При конфликтном упорядочивании транзакции следуют правилу принудительной записи: транзакция должна обновлять данные исходя из его прежнего значения, которое было считано ранее. При конфликтном упорядочивании для плана строят граф предшествования. Он состоит из следующих элементов:

1 Вершин, соответствующих каждой их транзакций плана.

2 Направленных ребер Ti -> Tj, где транзакция Tj считывает элемент, записанный транзакцией Ti.

3 Направленных ребер, Ti -> Tj, где транзакция Tj записывает элемент после того, как он был считан транзакцией Tj. /*До записи или вообще не записывает */

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

Пример конфликтно упорядочиваемого плана и неупорядочиваемого

T1

T2

T3

T4

begin tran

begin tran

read X

read X

write X

X=X+100

begin tran

write X

read X

begin tran

write X

read X

read Y

X=X*1.1

write Y

write X

commit

read Y

read Y

Y=Y*1.1

write Y

write Y

commit

commit

read Y

Y=Y-100

write Y

commit

Граф для Т1 и Т2 – без циклов Т3 и Т4 – с циклом

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

Два плана S1 и S2, состоящих из одних и тех же операций, входящих в транзакции T1, T2, … Tn, являются эквивалентными по просмотру, если выполняются следующие условия:

1 Если транзакция Ti прочла исходное значение элемента в плане S1, то эта же транзакция Ti должна прочесть исходное значение элемента и в плане S2.

2 Если в плане S1 транзакция Ti считывает значение элемента, записанного транзакцией Tj, то и в плане S2 Ti должна читать элемент, записанный Tj.

3 Если в плане S1 последняя операция записи элемента была выполнена транзакцией Ti, то эта же транзакция должна выполнять последнюю запись элемента и в плане S2.

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

T1

T2

T3

begin tran

read X

begin tran

write X

commit

write X

commit

begin tran

write X

commit

Этот план не вызовет никаких аномалий, так транзакция Т3 последней записывает элемент Х, не основываясь на его чтении. Поэтому не важно как другие транзакции ранее записывают значение этого элемента. Это и есть слепая запись.

/*Проверка упорядоченности по просмотру является очень сложной задачей. */

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

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

Протокол – это набор правил, которым должны следовать транзакции, что бы между ними не возникали конфликты.

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