Надежность СУБД. Классификация сбоев. Журнализация. Уровни журнализации. Типичные схемы использования журнала

Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя.

Два возможных вида аппаратных сбоев:

- мягкие сбои (внезапная остановка работы компьютера или аварийное выключение питания)

- жесткие сбои (потерей информации на носителях внешней памяти)

Примеры программных сбоев:

- аварийное завершение работы СУБД (по причине ошибки в программе или в результате некоторого аппаратного сбоя). Можно рассматривать как особый вид мягкого аппаратного сбоя (требуется ликвидировать последствия только одной транзакции).

- аварийное завершение пользовательской программы, в результате чего некоторая транзакция остается незавершенной.

Для поддержания надежности хранения данных в БД требуется избыточность хранения данных. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений БД.

Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью, в которую поступают записи обо всех изменениях основной части БД.

В разных СУБД изменения БД журнализуются на разных уровнях, при этом запись в журнале соответствует:

- некоторой логической операции изменения БД

- минимальной внутренней операции модификации страницы внешней памяти;

В некоторых системах одновременно используются оба подхода.

Во всех случаях придерживаются стратегии "упреждающей" записи в журнал (протокол Write Ahead Log - WAL). Эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД после любого сбоя.

Типичные схемы использования журнала:

- индивидуальный откат транзакции

журнал сканируется в обратном направлении, и все записи отменяемой транзакции извлекаются из журнала вплоть до отметки начала транзакции. Согласно извлеченной информации выполняются действия, отменяющие действия транзакции, а в журнал записываются компенсирующие записи. Этот процесс называется откат (rollback).

- восстановления БД при мягком сбое

Сначала производится откат незавершенных транзакций (undo), а потом повторно воспроизводят (redo) те операции завершенных транзакций, результаты которых не отображены во внешней памяти.

- восстановления БД при жестком сбое

Используется журнал и архивная копия БД. Восстановление БД состоит в том, что исходя из архивной копии по журналу, воспроизводится работа всех транзакций, которые закончились к моменту сбоя.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: