|
По материалам статьи Microsoft: INF:
Using Disk Drive Caching with SQL Server СУБД, прежде всего, призвана обеспечить точность хранимой
информации и достоверный поиск данных, даже после отказа
системны. Система должна гарантировать атомарность и
долговечность транзакций в процессе обслуживания запросов
клиентов, распределённых транзакций и при возникновении
различных отказов в её работе. В литературе даже существует
устоявшаяся аббревиатура для такого свойства системы: ACID
(Atomicity, Consistency, Isolation and Durability). Эта статья
описывает влияние кэшей дисков на работу MS SQL Server.
Рекомендуется также прочитать следующие статьи Microsoft
Knowledge Base: А также статью на сайте SQL.RU: SQL Server 7.0 и его более ранние версии, а также многиe
известные СУБД, используют протокол Write-Ahead Logging (WAL).
Протокол WAL - это определенный набор шагов, необходимых для
гарантии сохранности данных при обмене и их восстановления в
исходное состояние в случае отказ. Аналогично компьютерной
сети, использующей определенный набор протоколов надёжного и
гарантированного обмена данными, протокол WAL предназначен
защищать данные. Все версии SQL Server открывают файл журнала
транзакций и файлы баз данных с помощью функции Win32:
CreateFile. Когда SQL Server открывает файл, через
dwFlagsAndAttributes включается опция FILE_FLAG_WRITE_THROUGH.
Эта опция предписывает системе осуществлять запись через любой
промежуточный кэш и обращаться непосредственно к диску.
Система будет продолжать кэшировать операции записи, но не
будет откладывать запись. Опция FILE_FLAG_WRITE_THROUGH
гарантирует, что если операция записи возвращает код успешного
завершения, данные будут правильно сохранены на устройстве
долговременного хранения. Это свойство обеспечивает в
спецификации протокола Write Ahead Logging гарантию
достоверности данных. Многие дисководы (SCSI и IDE) содержат
собственный кэш 512 КБ, 1 МБ или больше. Однако, кэш диска
обычно замыкается конденсатором и не имеет собственной
батареи. Этот механизм кэширования не может гарантировать
защиты цикла записи от отказа в электропитании или аппаратных
сбоев. Он гарантирует только завершение операции записи
сектора. Поскольку ёмкость дисков продолжает расти, они
оснащаются кэшем большого размера, и становится возможной
потеря большого количества данных из-за отказа. ОБРАТИТЕ ВНИМАНИЕ: Необходимо, что бы используемый механизм кэширования должным образом обрабатывал многократные отказы. Microsoft провело испытание нескольких SCSI и IDE дисков с
использованием утилиты SQLIOStress. Эта утилита моделирует
тяжёлый режим асинхронного чтения - записи на устройство
данных и регистрационное устройство. Статистика этого теста
показывает, что среднее число операций записи в секунду
находится между 50 и 70 для дисков с заблокированным
кэширование записи и с диапазоном RPM между 5,200 и
7,200. ОБРАТИТЕ ВНИМАНИЕ: Для получения информации относительно состояния кэширования ваших дисков, обратитесь к их изготовителю и получите специализированную утилиту или описание параметров настройки, позволяющих отключить кэширование операций записи. |
Перевод: Александр Гладченко 2002г. |