Использование кэширующих дисков с SQL Server

ПУБЛИКАЦИИ  

По материалам статьи Microsoft: INF: Using Disk Drive Caching with SQL Server
Информация в этой статье относится к Microsoft SQL Server 7.0

СУБД, прежде всего, призвана обеспечить точность хранимой информации и достоверный поиск данных, даже после отказа системны. Система должна гарантировать атомарность и долговечность транзакций в процессе обслуживания запросов клиентов, распределённых транзакций и при возникновении различных отказов в её работе. В литературе даже существует устоявшаяся аббревиатура для такого свойства системы: ACID (Atomicity, Consistency, Isolation and Durability). Эта статья описывает влияние кэшей дисков на работу MS SQL Server. Рекомендуется также прочитать следующие статьи Microsoft Knowledge Base:
INF: SQL Server and Caching Disk Controllers Q86903
INF: Using Hard Disk Controller Caching with SQL Server Q46091
INF: SQL Server 7.0 Logging and Data Storage Algorithms Extend Data Reliability Q230785

А также статью на сайте SQL.RU:
MS SQL Server и кэширующие дисковые контроллеры + FAQ

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 МБ или больше. Однако, кэш диска обычно замыкается конденсатором и не имеет собственной батареи. Этот механизм кэширования не может гарантировать защиты цикла записи от отказа в электропитании или аппаратных сбоев. Он гарантирует только завершение операции записи сектора. Поскольку ёмкость дисков продолжает расти, они оснащаются кэшем большого размера, и становится возможной потеря большого количества данных из-за отказа.
Многие поставщики обеспечивают поддержку кэширования дополнительными батареями. Такой кэш может хранить данные в течение нескольких дней, а в некоторых решениях плата кэширования помещается даже в другом компьютере. В таком случае, при восстановлении питания, не записанные данные сохраняются на диск, и только потом продолжается работа. Многие из таких решений позволяют регулировать процентное соотношение кэшируемых операций чтения и записи, что может существенно оптимизировать эффективность дисковой подсистемы. Такое решение позволяет также некоторым производителям увеличить размер памяти для кэша. Фактически, для значительного сегмента рынка, многие поставщики аппаратных решений предлагают высококачественные батареи, которые поддерживают длительное питание для большого размера кэша, от 6 ГБ и больше. Это позволяет существенно улучшить эффективность базы данных.
Операции I/O проходят без использования кэша, поэтому их выполнение может занимать много времени из-за механики, которая перемещает головки диска, вращает диск и т.п.
Чтобы была обеспечена полная сохранность данных, необходимо гарантировать правильное их кэширование. Часто это означает, что Вы должны отключить кэширование записи для дисковода.

ОБРАТИТЕ ВНИМАНИЕ: Необходимо, что бы используемый механизм кэширования должным образом обрабатывал многократные отказы.

Microsoft провело испытание нескольких SCSI и IDE дисков с использованием утилиты SQLIOStress. Эта утилита моделирует тяжёлый режим асинхронного чтения - записи на устройство данных и регистрационное устройство. Статистика этого теста показывает, что среднее число операций записи в секунду находится между 50 и 70 для дисков с заблокированным кэширование записи и с диапазоном RPM между 5,200 и 7,200.
Для получения дополнительной информации о SQLIOStress, см. следующую статью Microsoft Knowledge Base:
INF: SQLIOStress Utility to Stress Disk Subsystem Like SQL Server Many PC manufactures Q231619
(Например, Compaq, Dell, Gateway или HP) устанавливают диски с заблокированным кэшированием записи. Однако, проверка показала, что это не всегда имеет место. Старайтесь проверять это самостоятельно.

ОБРАТИТЕ ВНИМАНИЕ: Для получения информации относительно состояния кэширования ваших дисков, обратитесь к их изготовителю и получите специализированную утилиту или описание параметров настройки, позволяющих отключить кэширование операций записи.


Перевод: Александр Гладченко  2002г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz