К числу основных
проблем восстановления после мягкого сбоя относится то, что одна логическая
операция изменения базы данных может изменять несколько физических блоков базы
данных, например, страницу данных и несколько страниц индексов. Страницы базы
данных буферизуются в оперативной памяти и выталкиваются независимо. Несмотря
на применение протокола WAL, после мягкого сбоя набор страниц внешней памяти
базы данных может оказаться несогласованным, то есть часть страниц внешней памяти
соответствует объекту до изменения, часть — после изменения. К такому состоянию
объекта неприменимы операции логического уровня.
Состояние
внешней памяти базы данных называется физически согласованным, если наборы страниц
всех объектов согласованы, то есть соответствуют состоянию объекта либо до его
изменения, либо после изменения.
Будем считать,
что в журнале отмечаются точки физической согласованности базы данных — моменты
времени, в которые во внешней памяти содержатся согласованные результаты операций,
завершившихся до соответствующего момента времени, и отсутствуют результаты
операций, которые не завершились, а буфер журнала вытолкнут во внешнюю память.
Немного позже мы рассмотрим, как можно достичь физической согласованности. Назовем
такие точки tpc (time of physical consistency) — точками физического согласования.
Тогда к моменту
мягкого сбоя возможны следующие состояния транзакций:
транзакция успешно
завершена, то есть выполнена операция подтверждения транзакции COMMIT и для
всех операций транзакции получено подтверждение ее выполнения во внешней памяти;
транзакция успешно
завершена, но для некоторых операций не получено подтверждение их выполнения
во внешней памяти;
транзакция получила
и выполнила команду отката ROLLBACK;
Знаете ли Вы, что любой разумный человек скажет, что не может быть улыбки без кота и дыма без огня, что-то там, в космосе, должно быть, теплое, излучающее ЭМ-волны, соответствующее температуре 2.7ºК. Действительно, наблюдаемое космическое микроволновое излучение (CMB) есть тепловое излучение частиц эфира, имеющих температуру 2.7ºK. Еще в начале ХХ века великие химики и физики Д. И. Менделеев и Вальтер Нернст предсказали, что такое излучение (температура) должно обнаруживаться в космосе. В 1933 году проф. Эрих Регенер из Штуттгарта с помощью стратосферных зондов измерил эту температуру. Его измерения дали 2.8ºK - практически точное современное значение. Подробнее читайте в FAQ по эфирной физике.