Как настроить MS SQL Server для максимальной производительности на PCI-e SSD дисках

Системный администратор IT и автоматизация бизнеса
← На главную

При использовании современных высокоскоростных накопителей NVMe (PCI-e SSD) в связке с MS SQL Server 2019 для работы 1С:Предприятие, системные администраторы часто сталкиваются с парадоксальной ситуацией: дорогостоящее оборудование простаивает, а утилизация дисков не поднимается выше 50–60% даже при интенсивной записи документов. Рассмотрим подробно, как правильно настроить серверную среду, чтобы раскрыть потенциал дисковой подсистемы и устранить «узкие места».

Анализируем расположение системных баз данных

Первым делом проанализируем, где располагаются файлы базы данных tempdb. В контексте работы 1С, эта база является критически важным компонентом, так как в ней создаются многочисленные временные таблицы при проведении документов и формировании сложных отчетов. Рассмотрим типичную ошибку: основные файлы базы данных (MDF/LDF) перенесены на быстрый NVMe RAID, а системная база tempdb осталась на старом диске (например, системном SATA SSD или HDD).

Выясним причину падения производительности: если tempdb находится на медленном носителе, вся мощь RAID-массива из PCI-e SSD нивелируется задержками при обращении к временным таблицам. Перенос tempdb на самый быстрый доступный диск (в нашем случае — на NVMe RAID 0) является первоочередной задачей. После этой операции нагрузка на дисковую подсистему распределяется корректно, и показатели утилизации в Activity Monitor приходят в норму.

Оптимизируем настройки tempdb для NVMe

Просто перенести файлы недостаточно. Разберем по шагам, как настроить tempdb под многопоточную нагрузку 1С:

  1. Количество файлов данных: Проверим количество логических процессоров сервера. Для SQL Server 2019 рекомендуется создавать количество файлов данных tempdb, равное количеству ядер, но не более 8 (если ядер больше). Это минимизирует конфликты при выделении страниц (конкуренция за PFS и GAM страницы).
  2. Одинаковый размер: Убедимся, что все файлы данных tempdb имеют абсолютно одинаковый начальный размер и одинаковый шаг авторасширения. Это позволит SQL Server использовать алгоритм proportional fill максимально эффективно, распределяя запись равномерно по всем файлам.

Настройка файловой системы и форматирование

Посмотрим на настройки файловой системы. Для высоконагруженных баз данных SQL Server на SSD крайне важно использовать правильный размер кластера. Проанализируем процесс записи: SQL Server оперирует страницами по 8 КБ, которые объединяются в экстенты по 64 КБ.

Рекомендация: При форматировании разделов под базы данных в файловой системе NTFS всегда выбирайте Allocation Unit Size (размер кластера) = 64 КБ. Стандартные 4 КБ заставляют контроллер SSD выполнять лишние операции при записи больших блоков данных, что увеличивает задержки (latency) и снижает общий ресурс накопителя.

Включаем мгновенную инициализацию файлов (Instant File Initialization)

Разберем механизм расширения файлов данных. По умолчанию SQL Server при создании или расширении файла заполняет новое пространство нулями, чтобы очистить данные, которые были на диске ранее. Это создает огромную нагрузку на дисковую подсистему в моменты пиковой нагрузки 1С, когда база начинает резко расти.

Чтобы избежать этого, предоставим учетной записи, от которой запущен SQL Server, право «Выполнение задач по обслуживанию томов» (Perform volume maintenance tasks) в локальных политиках безопасности Windows. Это позволит серверу мгновенно выделять место под файлы MDF без перезаписи их нулями.

Настройка Delayed Durability (Отложенная надежность)

Для домашних серверов или сред разработки, где допустима минимальная потеря данных при аварийном выключении, рассмотрим включение опции DELAYED_DURABILITY. В 1С основной поток транзакций нагружает файл журнала (LDF). При включении режима FORCED SQL Server подтверждает транзакцию сразу после записи в лог-кэш в оперативной памяти, не дожидаясь физического сброса на диск.

Выполним команду для базы данных:

ALTER DATABASE [Имя_Вашей_Базы] SET DELAYED_DURABILITY = FORCED;

Это значительно снижает задержки записи на PCI-e SSD и позволяет добиться максимальной линейной скорости при массовом проведении документов.

Особенности работы RAID-контроллеров и TRIM

Проанализируем аппаратную часть. Если RAID 0 собран средствами материнской платы (через BIOS), важно убедиться, что технология поддерживает команду TRIM для NVMe-устройств. Без TRIM производительность SSD-массива начнет деградировать уже через несколько недель интенсивной эксплуатации, так как контроллер не сможет эффективно очищать удаленные блоки данных.

Проверим состояние TRIM в Windows через командную строку от имени администратора:

fsutil behavior query DisableDeleteNotify

Если результат 0, значит поддержка TRIM включена на уровне ОС. Однако для RAID-массива также требуются специфические драйверы от производителя (например, Intel RST/VMD или AMD RAIDXpert). Регулярно проводите замеры скорости в синтетических тестах, чтобы вовремя заметить падение производительности из-за деградации ячеек памяти.

Параметры электропитания ОС

Выясним причину задержек в обработке прерываний. На серверных ОС по умолчанию может быть включен сбалансированный режим питания. Для систем с NVMe это критично: процессор может находиться в энергосберегающем состоянии в момент, когда контроллер SSD передает данные. Установим схему «Высокая производительность» (High Performance). Это обеспечит минимальные задержки при взаимодействии CPU и шины PCI-e.

Использование флагов трассировки

Несмотря на то что SQL Server 2019 уже оптимизирован, в некоторых конфигурациях 1С полезно использовать флаги трассировки для тонкой настройки. Разберем влияние флага 1118:

Этот флаг заставляет SQL Server выделять только полные экстенты (8 страниц по 8 КБ), исключая использование смешанных экстентов. Для быстрых SSD это помогает упорядочить структуру данных на физическом уровне и уменьшить фрагментацию в tempdb. Добавьте -T1118 в параметры запуска службы SQL Server.

Заключение

Таким образом, для эффективной работы 1С на NVMe SSD недостаточно просто установить быстрое железо. Мы должны обеспечить комплексный подход: правильно разнести файлы tempdb и базы данных, настроить размер кластера 64 КБ, включить мгновенную инициализацию файлов и убедиться в корректной работе драйверов RAID с поддержкой TRIM. Только после выполнения этих шагов дисковая подсистема перестанет быть «бутылочным горлышком», и производительность системы будет ограничена только мощностью процессора и оптимизацией кода самой 1С.

← На главную