Назад | Перейти на главную страницу

Размер кластера 64 КБ для файлов журнала SQL Server

Мне было интересно, поместим ли мы файл журнала базы данных SQL Server и tempdb на RAID 1, следует ли отформатировать его с кластером 64K для лучшей производительности?

В настоящее время база данных и файл журнала находятся на RAID5, что, на мой взгляд, хуже для журнала базы данных, если вы делаете много вставок, поскольку он выполняет двойную запись.

Это для SQL Server 2005

RAID 1 обычно дает лучшую производительность чтения, но худшую производительность записи, поэтому я бы не стал использовать его для сильно записываемых журналов и TempDB. В идеале по возможности следует использовать RAID 10 для SQL Server. Видеть: Уровни RAID и SQL Server.

Что касается вашего вопроса о размере кластера, см. Рекомендации по выравниванию дисковых разделов для SQL Server за отличное обсуждение всех соображений, которые следует принять во внимание. В статье говорится, что это для SQL 2008, но не менее актуально и для 2005 года. Вот самый важный вывод из статьи:

Существуют две корреляции, выполнение которых является фундаментальным предварительным условием для оптимальной производительности дискового ввода-вывода. Результатом следующих вычислений должно быть целое число:

Partition_Offset ÷ Stripe_Unit_Size

Stripe_Unit_Size ÷ File_Allocation_Unit_Size

Из двух, первое, безусловно, наиболее важно для оптимальной производительности. Ниже показан типичный сценарий несовпадения: при начальном смещении раздела в 32 256 байтов (31,5 КБ) и размере блока полосы в 65 536 байтов (64 КБ) результат будет 0,4921875. Это не целое число; поэтому размер смещения и полосы не коррелирует. Это соответствует несовпадению.

Однако начальное смещение раздела в 1 048 576 байт (1 МБ) и размер блока полосы в 65 536 байт дают результат ровно 8, точное целое число, что согласуется с выравниванием.

64К. И бревна должны быть на специальных шпинделях. Если последовательная запись журнала прервана другой деятельностью, это отрицательно скажется на производительности. И не помещайте tempdb на те же шпиндели, что и журналы, если вам нужно оптимизировать производительность.

Это зависит (как и все остальное) от вашей базы данных. Если вы в основном выполняете запись меньшего размера, вам следует использовать единицу распределения, которая соответствует размеру полосы, и убедитесь, что смещение раздела кратно размеру полосы. Как правило, полоски большего размера работают быстрее.

RAID 1 и RAID 10 почти всегда быстрее при небольших операциях записи, чем RAID 5 (RAID 5 должен выполнять чтение-запись каждый раз, когда вы пишете что-то меньшее, чем размер полосы, когда запись представляет собой целую полосу, это меньше штрафа, чем диск с четность - единственное, что нужно для чтения и записи, и буферы обратной записи позаботятся об этом).

Совет Джо хорош; Я бы пошел с этим, если у вас нет веской причины не делать этого.