При использовании современных высокоскоростных накопителей 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 под многопоточную нагрузку 1С:
tempdb, равное количеству ядер, но не более 8 (если ядер больше). Это минимизирует конфликты при выделении страниц (конкуренция за PFS и GAM страницы).tempdb имеют абсолютно одинаковый начальный размер и одинаковый шаг авторасширения. Это позволит SQL Server использовать алгоритм proportional fill максимально эффективно, распределяя запись равномерно по всем файлам.Посмотрим на настройки файловой системы. Для высоконагруженных баз данных SQL Server на SSD крайне важно использовать правильный размер кластера. Проанализируем процесс записи: SQL Server оперирует страницами по 8 КБ, которые объединяются в экстенты по 64 КБ.
Рекомендация: При форматировании разделов под базы данных в файловой системе NTFS всегда выбирайте Allocation Unit Size (размер кластера) = 64 КБ. Стандартные 4 КБ заставляют контроллер SSD выполнять лишние операции при записи больших блоков данных, что увеличивает задержки (latency) и снижает общий ресурс накопителя.
Разберем механизм расширения файлов данных. По умолчанию SQL Server при создании или расширении файла заполняет новое пространство нулями, чтобы очистить данные, которые были на диске ранее. Это создает огромную нагрузку на дисковую подсистему в моменты пиковой нагрузки 1С, когда база начинает резко расти.
Чтобы избежать этого, предоставим учетной записи, от которой запущен SQL Server, право «Выполнение задач по обслуживанию томов» (Perform volume maintenance tasks) в локальных политиках безопасности Windows. Это позволит серверу мгновенно выделять место под файлы MDF без перезаписи их нулями.
Для домашних серверов или сред разработки, где допустима минимальная потеря данных при аварийном выключении, рассмотрим включение опции DELAYED_DURABILITY. В 1С основной поток транзакций нагружает файл журнала (LDF). При включении режима FORCED SQL Server подтверждает транзакцию сразу после записи в лог-кэш в оперативной памяти, не дожидаясь физического сброса на диск.
Выполним команду для базы данных:
ALTER DATABASE [Имя_Вашей_Базы] SET DELAYED_DURABILITY = FORCED;
Это значительно снижает задержки записи на PCI-e SSD и позволяет добиться максимальной линейной скорости при массовом проведении документов.
Проанализируем аппаратную часть. Если 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С.