Меню
Главная
Случайная статья
Настройки
|
Расписанием называется упорядоченная последовательность действий, предпринимаемых в процессе выполнения одной или нескольких транзакции.
Содержание
Последовательное расписание
Расписание последовательно, если оно подразумевает выполнение всех действий одной транзакции, а затем всех действий другой транзакции, и т.д.
Пример
В приведённой таблице отражены транзакции T1 и T2, а также изменения переменных, которые эти транзакции затрагивают.
T1
|
T2
|
A
|
B
|
|
|
25
|
25
|
READ(A,t)
|
|
|
|
t:=t+100
|
|
|
|
WRITE(A,t)
|
|
125
|
|
READ(B,t)
|
|
|
|
t:=t+100
|
|
|
|
WRITE(B,t)
|
|
|
125
|
|
READ(A,s)
|
|
|
|
s:=s*2
|
|
|
|
WRITE(A,s)
|
250
|
|
|
READ(B,s)
|
|
|
|
s:=s*2
|
|
|
|
WRITE(B,s)
|
|
250
|
Конфликт
Пара последовательных действий в расписании считается конфликтной, если изменение взаимного порядка их выполнения оказывает влияние на поведение хотя бы одной из транзакций.
Обозначим действия транзакции: ri(X), wi(X), где r - операция чтения, w - операция записи, i - номер транзакции, X - элемент базы данных.
Неконфликтные пары действий- ri(X);rj(Y)
- ri(X);wj(Y) при XY
- wi(X);rj(Y) при XY
- wi(X);wj(Y) при XY
Конфликтные пары действий- Два последовательных действия одной транзакции, например ri(X);ri(Y)
- Две операции записи значения одного элемента базы данных, выполняемых разными транзакциями: wi(X);wj(X)
- Последовательные операции записи и чтения одного и того же элемента базы данных разными транзакциями: ri(X);wj(X)
Допустимые перестановки действий различных транзакций
Перестановки действий различных транзакций допустимы, если:
- Они затрагивают разные элементы базы данных.
или
- Ни одно из этих действий не связано с операцией записи данных.
Условно-последовательное расписание
Расписание называется условно-последовательным, если результат его реализации оказывается аналогичным результату реализации последовательного расписания. Смотри Граф предшествования.
Пример
T1
|
T2
|
A
|
B
|
|
|
25
|
25
|
READ(A,t)
|
|
|
|
t:=t+100
|
|
|
|
WRITE(A,t)
|
|
125
|
|
|
READ(A,s)
|
|
|
|
s:=s*2
|
|
|
|
WRITE(A,s)
|
250
|
|
READ(B,t)
|
|
|
|
t:=t+100
|
|
|
|
WRITE(B,t)
|
|
|
125
|
|
READ(B,s)
|
|
|
|
s:=s*2
|
|
|
|
WRITE(B,s)
|
|
250
|
|
|