Восстановление и журналирование
Механизмы восстановления и журналирования гарантируют атомарность и долговечность транзакций, записывая изменения в журнал, чтобы после сбоя зафиксированная работа могла быть повторена, а незафиксированная — отменена.
Definition
Восстановление базы данных — это процесс приведения базы данных в согласованное состояние после сбоя, обеспечивающий долговечность эффектов зафиксированных транзакций и отсутствие следов отмененных или незавершенных транзакций; журналирование — это метод записи действий транзакций в постоянный журнал для обеспечения возможности восстановления.
Scope
Эта тема охватывает, как база данных переживает сбои: протокол упреждающей записи в журнал (WAL), информацию для отмены (undo) и повтора (redo), контрольные точки для ограничения объема работ по восстановлению и стандартный алгоритм восстановления (в частности, ARIES) с его фазами анализа, повтора и отмены. Рассматриваются политики управления буфером (steal/no-steal, force/no-force), которые определяют, какое журналирование требуется. Исключаются протоколы управления параллелизмом, работающие в обычном режиме, и распределенная фиксация, которые являются смежными темами.
Core questions
- Почему запись в журнал должна достигать постоянного хранилища раньше, чем данные, которые она описывает (упреждающая запись в журнал)?
- Как отмена (undo) и повтор (redo) восстанавливают согласованное состояние после сбоя?
- Как политики управления буфером (steal/force) определяют требования к журналированию?
- Какую роль играют контрольные точки в ограничении времени восстановления?
- Как алгоритм ARIES структурирует восстановление на фазы анализа, повтора и отмены?
Key concepts
- упреждающая запись в журнал (WAL)
- журналирование отмены (undo) и повтора (redo)
- номер последовательности журнала
- контрольные точки
- политики steal/no-steal и force/no-force
- записи компенсационного журнала
- фазы анализа, повтора, отмены
- ARIES
Key theories
- Упреждающая запись в журнал
- Протокол WAL требует, чтобы записи журнала, описывающие изменение, были принудительно записаны в стабильное хранилище до соответствующей страницы данных, гарантируя, что после сбоя система имеет достаточно информации для отмены незафиксированных и повтора зафиксированных изменений.
- Восстановление с помощью отмены/повтора и буферные политики
- Необходимость системы в отмене, повторе или обоих зависит от буферных политик: политика steal (запись незафиксированных страниц на диск) требует отмены, а политика no-force (не принудительная запись зафиксированных страниц при фиксации) требует повтора; распространенная комбинация steal/no-force требует и того, и другого.
- ARIES
- ARIES — это широко используемый метод восстановления, который использует упреждающую запись в журнал, номера последовательности журнала и трехфазный (анализ, повтор, отмена) алгоритм с записями компенсационного журнала для поддержки мелкозернистой блокировки и частичных откатов.
Clinical relevance
Восстановление и журналирование делают долговечность реальной: они гарантируют, что после подтверждения системой транзакции, такой как платеж или заказ, этот факт сохраняется при потере питания и сбоях, и что сбой в середине транзакции никогда не оставляет базу данных в частично обновленном, несогласованном состоянии.
History
Обзор Хардера и Ройтера 1983 года изложил принципы транзакционно-ориентированного восстановления и таксономию буферных политик. ARIES, разработанный К. Моханом и его коллегами в IBM и опубликованный в 1992 году, стал де-факто стандартным алгоритмом восстановления, сочетающим упреждающую запись в журнал с номерами последовательности журнала и записями компенсации для поддержки мелкозернистой блокировки.
Key figures
- C. Mohan
- Jim Gray
- Theo Härder
- Andreas Reuter
Related topics
Seminal works
- mohan1992
- haerder1983
- gray1992
Frequently asked questions
- Почему необходима упреждающая запись в журнал?
- Потому что база данных может записать измененную страницу на диск до фиксации транзакции или удерживать зафиксированную страницу в памяти во время сбоя. Принудительная запись записи журнала до страницы данных гарантирует, что, независимо от действий менеджера буфера, восстановление имеет достаточно информации для отмены незафиксированных изменений и повтора зафиксированных для достижения согласованного состояния.
- Что дают контрольные точки?
- Контрольная точка периодически записывает, какие транзакции активны, и сбрасывает учетные данные в журнал, предоставляя восстановлению недавнюю, заведомо хорошую отправную точку. Без контрольных точек восстановлению, возможно, пришлось бы сканировать весь журнал с самого начала; контрольные точки ограничивают, насколько далеко назад должно обрабатываться восстановление, поддерживая управляемое время перезапуска.