Използване на кеширащи дискове с SQL Server
Използване на кеширащи дискове с SQL Server
Адаптирано от статия на Microsoft: INF: Използване на кеширане на дисково устройство с SQL Server Информацията в тази статия се отнася за Microsoft SQL Server 7.0
SQL Server 7.0 и по-стари версии, както и много добре познати СУБД, използват протокола Write-Ahead Logging (WAL). Протоколът WAL е специфичен набор от стъпки, необходими, за да се гарантира, че данните се обменят и възстановяват в първоначалното си състояние в случай на повреда. Подобно на компютърна мрежа, която използва определен набор от протоколи за надежден и гарантиран обмен на данни, протоколът WAL е предназначен да защитава данните. Всички версии на SQL Server отварят регистрационния файл на транзакциите и файловете на базата данни с помощта на функцията Win32:CreateFile. Когато SQL Server отвори файл, опцията FILE_FLAG_WRITE_THROUGH се активира чрез dwFlagsAndAttributes. Тази опция казва на системата да пише през всеки междинен кеш и да има директен достъп до диска. Системата ще продължи да кешира записи, но няма да отложи записите. Опцията FILE_FLAG_WRITE_THROUGH гарантира, че ако операция за запис върне успешен код, данните се записват правилно в устройството за постоянно съхранение. Това свойство предоставя гаранция в спецификацията на протокола Write Ahead Logging, че данните са валидни. Много устройства (SCSI и IDE) съдържат собствен кеш от 512 KB, 1 MB или повече. Дисковият кеш обаче обикновено е затворен от кондензатор и няма собствена батерия. Този механизъм за кеширане не може да гарантира, че цикълът на запис ще бъде защитен от прекъсване на захранването или хардуерен отказ. Той гарантира само завършването на операцията за запис на сектора. Тъй като капацитетът на дисковете продължава да расте, те са оборудвани с голям кеш и става възможно да загубитеголямо количество данни поради повреда. Много доставчици предоставят поддръжка за кеширане с допълнителни батерии. Такъв кеш може да съхранява данни за няколко дни, а в някои решения кеширащата платка дори се поставя в друг компютър. В този случай, когато захранването се възстанови, незаписаните данни се записват на диска и едва тогава работата продължава. Много от тези решения ви позволяват да регулирате процента на кешираните четения и записи, което може значително да оптимизира ефективността на дисковата подсистема. Това решение също позволява на някои производители да увеличат размера на кеш паметта. Всъщност за значителен сегмент от пазара много доставчици на хардуер предлагат висококачествени батерии, които поддържат дълготрайна мощност за големи размери на кеш паметта, 6 GB или повече. Това значително подобрява ефективността на базата данни. Входно-изходните операции се извършват без използване на кеш, така че може да отнеме много време, за да завършат поради механиката, която движи дисковите глави, върти диска и т.н. За да се осигури пълна устойчивост на данните, е необходимо да се гарантира, че те са кеширани правилно. Често това означава, че трябва да деактивирате кеширането на запис за устройството.
ЗАБЕЛЕЖКА: От съществено значение е използваният механизъм за кеширане да обработва правилно множество повреди.
Microsoft тества няколко SCSI и IDE устройства с помощта на помощната програма SQLIOStress. Тази помощна програма симулира асинхронно четене/запис в тежък режим на устройство за данни и устройство за регистрация. Статистиката от този тест показва, че средните записи в секунда са между 50 и 70 за устройства с деактивирано кеширане на запис и с обхват на RPM между 5200и 7200. За повече информация относно SQLIOStress вижте следната статия в базата знания на Microsoft: INF: Помощна програма SQLIOStress за стресова дискова подсистема като SQL Server Много производители на компютри Q231619 (Например Compaq, Dell, Gateway или HP) инсталират дискове с деактивирано кеширане на запис. Тестовете обаче показват, че това не винаги е така. Опитайте се да го проверите сами.
МОЛЯ, ОБЪРНЕТЕ ВНИМАНИЕ: За информация относно състоянието на кеширане на вашите дискове, свържете се с техния производител за специализирана помощна програма или описание на опциите за конфигурация за деактивиране на кеширането при запис.