В чем преимущество повторения истории в методе восстановления ОВЕН?

Почему в алгоритме ARIES нужно повторять всю историю до сбоя в повторном проходе ? Могу ли я получить номера совершенных транзакций во время прохода анализа, а затем просто повторить запись журнала совершенных транзакций? Этот метод уменьшит количество записей, которые необходимо повторить и отменить.


person frank    schedule 07.12.2012    source источник


Ответы (2)


Короткий ответ:

Нам нужно повторить всю историю перед сбоем на проходе повтора, чтобы обеспечить согласованность базы данных перед выполнением прохода отмены.

Длинный ответ:

алгоритм восстановления ARIES, чтобы обеспечить свойства атомарности и устойчивости СУБД, выполняет 3 проходит:

  1. Проход анализа: чтобы увидеть, что нужно сделать (проигрывает журнал вперед)
  2. Повторить проход: чтобы убедиться, что диск отражает все обновления, которые есть в журнале, но не на диске, включая те, которые относятся к транзакциям, которые в конечном итоге будут отменены. Таким образом, мы находимся в непротиворечивом состоянии, что позволяет выполнять логическую отмену.
  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
comment
Спасибо. Я нашел более разумный ответ. Для поддержки мелкозернистой блокировки необходимо повторить все обновления, даже если они находятся в незафиксированном обновлении. Это описано в разделе 10.1 статьи ARIES и сравнивается с методом выборочного повтора. - person frank; 08.12.2012