Несколько человек предложили разобрать некоторые мифы, связанные с контрольными суммами страниц, так что сегодня у нас очередной экстравагантный «многомифобойный» день! Ну, по крайней мере, я в восторге :-)
Я подробно описывал контрольные суммы страниц в статье блога How to tell if the IO subsystem is causing corruptions?
Различные мифы о контрольных суммах страниц
Все они ЛОЖНЫЕ
Контрольные суммы страниц исправляют ошибки
Нет. Контрольные суммы страниц могут обнаруживать ошибки на странице, но они не подобны контрольным суммам на основе CRC в сетевых протоколах, которые могут исправлять одноразрядные ошибки.
Включение контрольных сумм страниц запускает фоновую задачу по простановке контрольной суммы на каждой странице базы данных
Нет. Не существует процесса, фонового или иного, который мог бы проставить контрольную сумму на каждой странице. Это серьёзная неприятность (технический термин :-), поскольку это означает, что вы должны выполнить перестроение индексов или другие операции, затрагивающие весь объём данных, чтобы фактически проставить контрольную сумму на страницах. Этот миф тесно связан с мифом ниже…
Простого чтения страниц достаточно, чтобы проставить на них контрольную сумму (например, с помощью резервного копирования или DBCC CHECKDB)
Нет. Контрольная сумма проставляется на странице только тогда, когда она считывается в память, изменяется, а затем записывается обратно на диск.
При переключении базы данных с обнаружения оборванных страниц (torn-page detection) на контрольные суммы страниц все данные об обнаружении оборванных страниц теряются
Нет. Страницы «знают», защищены ли они с помощью обнаружения оборванных страниц, контрольной суммы или вообще никак. Как упоминалось выше, страницы не переключаются на контрольную сумму, пока они не будут физически изменены. Я подробно рассматривал этот вопрос с примером скрипта в статье Отключается ли "torn page detection" при включении "page checksums"?
Контрольные суммы страниц обнаруживают повреждения немедленно
Этот миф предложила разоблачить коллега-эксперт Microsoft MVP Гейл Шоу (Gail Shaw - blog), и он, конечно же, не соответствует действительности. Повреждённая страница не может быть обнаружена, пока она не будет считана в память и пул буферов не проверит корректность её контрольной суммы.
Контрольные суммы страниц включаются автоматически при обновлении с SQL Server 2000 или 7.0
Нет. Вы должны явно включить контрольные суммы страниц для обновлённых баз данных с помощью команды ALTER DATABASE blah SET PAGE_VERIFY CHECKSUM. Базы данных, созданные в более поздних версиях, будут иметь контрольные суммы страниц, включённые автоматически, если только вы не измените этот параметр в базе данных model — чего вам не следует делать.

Комментариев нет:
Отправить комментарий