1632
правки
Изменения
м
rollbackEdits.php mass rollback
==Журнал восстановления==
в системе ведетсяжурнал на ленте или (чаще всего) на диске, в котором регистрируются подробные сведения обо всех обновлениях, в частности, значения обновляемых объектов (например кортежей) до и после каждого обновленияЗапись контрольной точки содержит список всех транзак-ций, выполняемых в тот момент, когда создавалась контрольная точка.[[Файл:12.jpg|right]]
Отказ системы произошел в момент времени 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.