Почему в алгоритме ARIES нужно повторять всю историю до сбоя в повторном проходе ? Могу ли я получить номера совершенных транзакций во время прохода анализа, а затем просто повторить запись журнала совершенных транзакций? Этот метод уменьшит количество записей, которые необходимо повторить и отменить.
В чем преимущество повторения истории в методе восстановления ОВЕН?
Ответы (2)
Короткий ответ:
Нам нужно повторить всю историю перед сбоем на проходе повтора, чтобы обеспечить согласованность базы данных перед выполнением прохода отмены.
Длинный ответ:
алгоритм восстановления ARIES, чтобы обеспечить свойства атомарности и устойчивости СУБД, выполняет 3 проходит:
- Проход анализа: чтобы увидеть, что нужно сделать (проигрывает журнал вперед)
- Повторить проход: чтобы убедиться, что диск отражает все обновления, которые есть в журнале, но не на диске, включая те, которые относятся к транзакциям, которые в конечном итоге будут отменены. Таким образом, мы находимся в непротиворечивом состоянии, что позволяет выполнять логическую отмену.
- Отменить проход: удалить действия любых проигрышных транзакций.
Журнал данных UNDO является логическим, а журнал данных REDO — физическим:
- Мы должны выполнить физический REDO, так как мы не можем гарантировать, что база данных находится в согласованном состоянии (поэтому, например, регистрация «INSERT VALUE X INTO TABLE Y» может быть плохой идеей, потому что X может быть отражено в индексе, но а не таблицу, или наоборот, если при вставке произойдет сбой)
- Мы можем выполнить логический UNDO, потому что после REDO мы знаем, что все непротиворечиво. На самом деле, мы должны выполнять логическую отмену, потому что мы отменяем только некоторые действия, а физическое ведение журналов отмен в форме, например, «разделить страницу x индекса y», может быть неправильным с точки зрения управления индексами или инвариантами. техническое обслуживание. Нам не нужно беспокоиться об этом во время повтора, потому что мы повторяем историю и воспроизводим все, что означает, что любые физические изменения, сделанные в базе данных в прошлый раз, по-прежнему будут правильными.
person
Franck Dernoncourt
schedule
12.04.2013
Причина в том, что ARIES спроектирован так, чтобы работать с подходом без принуждения и кражи. Часть «украсть» означает, что изменения незафиксированной транзакции могут быть записаны на диск. Поэтому нам нужно повторить все транзакции, как зафиксированные, так и незафиксированные, чтобы мы могли отменить незафиксированные.
person
Imre Kerr
schedule
07.12.2012
Спасибо. Я нашел более разумный ответ. Для поддержки мелкозернистой блокировки необходимо повторить все обновления, даже если они находятся в незафиксированном обновлении. Это описано в разделе 10.1 статьи ARIES и сравнивается с методом выборочного повтора.
- person frank; 08.12.2012