Восстановление данных при откате транзакции происходит с помощью семейства алгоритмов, например ARIES (Algorithms for Recovery and Isolation Exploiting Semantics). 1 Процесс включает несколько шагов: 1
- Analysis. 1 Выявление таблиц, которые были модифицированы в ходе транзакции, а также анализ операций, проведённых в пределах транзакции, и их состояния. 1
- REDO. 1 На этом этапе известно, где произошла ошибка и в какие таблицы были внесены изменения. 1 Чтобы гарантировать консистентность хранилища и исключить возможность порчи данных, необходимо ещё раз пройти по всем операциям, необходимым для транзакции, с самого начала и до момента ошибки. 1
- UNDO. 1 На последнем этапе происходит очередной проход по лог-файлу и перезаписываются значения в изменённых таблицах. 1 При этом сохраняются значения таблицы, которые были в ней до того, как началось выполнение транзакции. 1 В результате хранилище возвращается к изначальному состоянию. 1
При индивидуальном откате транзакции просматривается список записей, сделанных данной транзакцией в журнале транзакций (от последнего изменения к первому изменению). 2 Затем выбирается очередная запись из списка и выполняется противоположная по смыслу операция. 23 Например, вместо операции INSERT выполняется соответствующая операция DELETE, вместо операции DELETE выполняется INSERT, а вместо прямой операции UPDATE — обратная операция UPDATE, восстанавливающая предыдущее состояние объекта базы данных. 23