оперативная память была бы бесконечной, а сбои никогда бы не происходили,
то наилучшим выходом была бы загрузка всей БД в оперативную память и
работа с данными только в оперативной памяти, а запись измененных страниц
на диск только в момент завершения работы всей системы. Однако, на
настоящий момент объемы оперативной (энергозависимой) памяти не могут
вместить всех обрабатываемых данных, и нет полной защиты от сбоев, поэтому
данные должны из буфера памяти время от времени выталкиваться на диск
(даже если бы мы обладали бесконечной, но энергозависимой памятью).
Влияние внешних и внутренних факторов на память системы приводит к
утрате необходимых данных. Восстановление БД может производиться в
следующих характерных случаях:
1) Индивидуальный откат транзакции. Откат индивидуальной транзакции
может быть инициирован либо самой транзакцией путем подачи команды
ROLLBACK, либо СУБД в случае возникновения какой-либо ошибки в работе
транзакции (например, деление на нуль) или если эта транзакция выбрана в
качестве жертвы при разрешении тупика. При таких сбоях нет потерь данных в
обоих видах памяти системы.
2) Мягкий сбой системы. Мягкий сбой характеризуется утратой
оперативной памяти системы. При этом поражаются все выполняющиеся в
момент сбоя транзакции, теряется содержимое буферов. Данные, хранящиеся в
долговременной памяти, при таких сбоях остаются неповрежденными. Мягкий
сбой может произойти, например, в результате аварийного отключения
электрического питания, в результате неустранимого сбоя других электронных
компонентов системы (например, процессора) или аварийного отказа
программного обеспечения (например, сбой операционной системы).
3) Жесткий сбой системы (аварийный отказ аппаратуры). Жесткий сбой
характеризуется повреждением долговременной памяти. Жесткий сбой может
произойти, например, в результате поломки головок дисковых накопителей.
При таком сбое обычно теряется и содержимое буферов оперативной памяти.
178