Транзакции. Восстановление. Классический алгоритм — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
(не показано 5 промежуточных версий 2 участников)
Строка 10: Строка 10:
  
 
==Журнал восстановления==
 
==Журнал восстановления==
в системе ведется
+
в системе ведется журнал на ленте или (чаще всего) на диске, в котором регистрируются подробные сведения обо всех обновлениях, в частности, значения обновляемых объектов (например кортежей) до и после каждого обновления Запись контрольной точки содержит список всех транзак-
журнал на ленте или (чаще всего) на диске, в котором регистрируются подробные сведения обо всех обновлениях, в частности, значения обновляемых объектов (например кортежей) до и после каждого обновления.[[Файл:12.jpg|right]]
+
ций, выполняемых в тот момент, когда создавалась контрольная точка.[[Файл:12.jpg|right]]
 
Отказ системы произошел в момент времени tf.
 
Отказ системы произошел в момент времени tf.
 
Ближайшая к моменту tf контрольная точка была создана в момент времени tc.
 
Ближайшая к моменту tf контрольная точка была создана в момент времени tc.
Транзакция типа Т1 успешно завершена до момента времени tc.
+
* Транзакция типа Т1 успешно завершена до момента времени tc.
Транзакция типа Т2 начата до момента tc и успешно завершена после момента
+
* Транзакция типа Т2 начата до момента tc и успешно завершена после момента времени tc, но до момента времени tf.
времени tc, но до момента времени tf.
+
* Транзакция типа ТЗ также начата до момента времени tc, но не завершена к моменту времени tf.
* Транзакция типа ТЗ также начата до момента времени tc, но не завершена к мо
+
* Транзакция типа Т4 начата после момента времени tc и успешно завершена до момента времени tf.
менту времени tf.
+
* Наконец, транзакция типа Т5 также начата после момента tc, но не завершена к моменту времени tf
* Транзакция типа Т4 начата после момента времени tc и успешно завершена до
+
 
момента времени tf.
+
==Классический алгоритм==
* Наконец, транзакция типа Т5 также начата после момента tc, но не завершена к
+
1. Создаются два списка транзакций; назовем их UNDO (Отменить) и REDO (Выполнить повторно).
моменту времени tf
+
 
 +
2. В список UNDO заносятся все транзакции, упомянутые в последней из существующих записей контрольной точки, a cписок REDO пока остается пустым.
 +
 
 +
3. В журнале регистрации поиск начинается с записи контрольной точки и происходит в прямом направлении.
 +
 
 +
4. Если в журнале регистрации обнаружена запись BEGIN TRANSACTION с указанием о начале выполнения некоторой транзакции т, то эта транзакция добавляется в
 +
СПИСОК UNDO.
 +
 
 +
5. Если в журнале регистрации обнаружена запись COMMIT, свидетельствующая об окончании выполнения некоторой транзакции т, эта транзакция переносится из
 +
СПИСКа UNDO В СПИСОК REDO.
 +
 
 +
6. По достижении конца файла журнала регистрации списки UNDO и REDO анализируются для выявления, соответственно, транзакций типов ТЗ и Т5, а также типов
 +
Т2 и Т4.

Текущая версия на 19:03, 4 сентября 2022

Восстановление

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

Транзакции

Транзакция — это логическая единица работы; она начинается с выполнения операции BEGIN TRANSACTION и заканчивается операцией COMMIT(зафиксировать) или ROLLBACK(откатить все изменения).

Журнал восстановления

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

ций, выполняемых в тот момент, когда создавалась контрольная точка.
12.jpg

Отказ системы произошел в момент времени tf. Ближайшая к моменту tf контрольная точка была создана в момент времени tc.

  • Транзакция типа Т1 успешно завершена до момента времени tc.
  • Транзакция типа Т2 начата до момента tc и успешно завершена после момента времени tc, но до момента времени tf.
  • Транзакция типа ТЗ также начата до момента времени tc, но не завершена к моменту времени tf.
  • Транзакция типа Т4 начата после момента времени tc и успешно завершена до момента времени tf.
  • Наконец, транзакция типа Т5 также начата после момента tc, но не завершена к моменту времени tf

Классический алгоритм

1. Создаются два списка транзакций; назовем их UNDO (Отменить) и REDO (Выполнить повторно).

2. В список UNDO заносятся все транзакции, упомянутые в последней из существующих записей контрольной точки, a cписок REDO пока остается пустым.

3. В журнале регистрации поиск начинается с записи контрольной точки и происходит в прямом направлении.

4. Если в журнале регистрации обнаружена запись BEGIN TRANSACTION с указанием о начале выполнения некоторой транзакции т, то эта транзакция добавляется в СПИСОК UNDO.

5. Если в журнале регистрации обнаружена запись COMMIT, свидетельствующая об окончании выполнения некоторой транзакции т, эта транзакция переносится из СПИСКа UNDO В СПИСОК REDO.

6. По достижении конца файла журнала регистрации списки UNDO и REDO анализируются для выявления, соответственно, транзакций типов ТЗ и Т5, а также типов Т2 и Т4.