При совместной работе системы 1С:Предприятие и Microsoft SQL Server производительность и стабильность базы данных напрямую зависят от корректной настройки СУБД и оптимального распределения дисковой подсистемы. Рассмотрим подробно основные архитектурные и технические рекомендации по настройке MS SQL Server для высоконагруженных систем 1С.
В идеальном сценарии рекомендуем физически разделять хранение различных типов файлов MS SQL Server на отдельных накопителях или RAID-массивах:
Служебная база TempDB характеризуется большим объемом неупорядоченных операций записи, что создает повышенный износ SSD. Разберем ситуацию, когда накопитель с TempDB выходит из строя.
При физическом сбое накопителя служба MSSQLSERVER мгновенно завершит работу с ошибкой доступа к файлу. Однако сами рабочие базы данных 1С останутся в полной сохранности, так как их файлы данных и транзакций находятся на других носителях.
Проанализируем по шагам порядок восстановления работы после сбоя диска TempDB:
При запуске СУБД автоматически создаст файлы базы TempDB на новом диске с начальными параметрами размера, и система 1С продолжит работу в штатном режиме.
Размещение TempDB в оперативной памяти с помощью сторонних драйверов RAM-диска на первый взгляд кажется привлекательным для скорости, однако несет скрытые риски. При непредвиденной перезагрузке сервера или сбое виртуального диска структура каталогов на RAM-диске будет утеряна. В результате служба SQL Server не сможет стартовать до тех пор, пока папки не будут воссозданы вручную с выдачей соответствующих прав учетной записи СУБД.
Для исключения узких мест при работе с TempDB выполним следующие настройки:
TempDB должны иметь строго одинаковый начальный размер и одинаковый фиксированный шаг расширения (в мегабайтах, например, по 512 МБ, но ни в коем случае не в процентах). Это включает алгоритм Round-Robin и выравнивает нагрузку между файлами.-T1117 (равномерное расширение файлов в группе) и -T1118 (выделение полных экстентов). В MS SQL Server 2016 и новее эта функциональность включена по умолчанию.Посмотрим на важнейшие настройки MS SQL Server, критичные для специфики работы платформы 1С:
max server memory), оставив минимум 4–8 ГБ для операционной системы и дополнительную память под процессы сервера 1С, если они совмещены на одном хосте.Max Degree of Parallelism = 1. Запросы 1С оптимизированы под однопоточное выполнение, а параллелизм часто приводит к нерациональным накладным расходам и взаимоблокировкам (Deadlocks).Cost Threshold for Parallelism следует поднять со стандартного 5 до 50 и выше.Выясним причину высокой эффективности режима RCSI при работе с 1С:
При использовании режима управляемых блокировок 1С крайне рекомендуется включать режим Read Committed Snapshot Isolation (RCSI). Для этого в SQL Server выполняются команды:
ALTER DATABASE [ИмяБазы1С] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [ИмяБазы1С] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
Этот режим позволяет читающим транзакциям не блокировать пишущие транзакции (и наоборот). Обратите внимание: при использовании RCSI версии строк сохраняются в TempDB, что дополнительно повышает требования к производительности накопителя, на котором размещена эта база.
Также проверим параметры обслуживания баз данных:
AUTO_SHRINK OFF и AUTO_CLOSE OFF. Автоматическое сжатие базы вызывает колоссальную фрагментацию индексов и падение производительности.AUTO_CREATE_STATISTICS ON, AUTO_UPDATE_STATISTICS ON и AUTO_UPDATE_STATISTICS_ASYNC ON для поддержания актуальности статистики в асинхронном режиме.Рассмотрим системные параметры Windows Server, оптимизирующие работу СУБД:
Perform Volume Maintenance Tasks ("Выполнение задач по обслуживанию тома") в локальной политике безопасности OS. Это исключит задержки при автоматическом расширении файлов данных.