Здравствуйте, Merle, Вы писали:
R>>А вот менеджера транзакций в понимании блокировочника там нет,
M>Там нет не менеджера транзакций, а менеджера блокировок. А менеджер транзакций там в полне себе есть. Возможно он называется по другому, но это тот самый механизм, который определяет, что вот эта вот транзакция нарвалась на вот эту вот и ее надо откатить, по бырому, чтобы не отсвечивала.
M>Это не обязательно остдельный сервер или отдельная часть ядра — это просто специальное название весьма конкретной функциональности.
R>>журнала также нет, все гораздо проще — есть страницы, и есть версии записей.
M>Да. Нет журнала, как отдельного файла или механизма, но схема работы с данными действительно напоминает undo-журнал.
Ну да, хотя скорее это напоминает именно версионность
R>>Сбой в структуре может произойти в следующих случаях:
R>>1. Смерть сервера по форсмажорным электричествам во время сборки мусора (sweep)
M>Вот здесь вот та самая оговорка про отказоустойчивость. Отказоустойчивость должна обеспечиваться и при работе всех обслуживающие механизмов, а здесь ее нет.
Да, к сожалению. Поэтому автоматическую сборку мусора обычно отключают, она нужна редко, поэтому ее делают сразу после бекапа, или просто восстанавливают из бекапа всю БД. Кстати, в Yaffil именно это и исправлено — sweep не представляет опасности.
R>>2. Отключение forced writes — сервер не знает, данные в кеше системы или уже на диске
M>Естественно, тут никакой журнал не спасет.
R>>3. Некорректные изменения метаданных — во время работы и тд.
M>Вот это тоже непонятно....
В частности, изменение текста хранимой процедуры во время ее использования может привести к повреждению. Поэтому не рекомендуется изменять структуру БД в то время, когда с ней работают.
R>>4. ... Ну еще несколько причин, не таких основных.
M>В том-то и дело, что при полноценном Recovery никаких причин не должно быть в принципе.
Все эти причины вполне преодолимы, нужно просто соблюдать чистоту рук так сказать:
-грамотно писать структуру БД, понимая, что такое версионность и как работают проверки целостности
-не лезть изменять метаданные во время работы
-отключить sweep
-включить forced wirtes
M>Единственная допускаемая возможность невосстановимого сбоя — это случай физического повреждения носителя. Если же повреждения не произошло, то база обязана сама себя привести в корректное состояние без посторонней помощи.
При выполнении вышеуказанных условий повреждение базы может произойти фактически только при сбое оборудования (не только носителя, память, к сожалению тоже может сбоить)