При обновлении серверной инфраструктуры для работы решений на платформе 1С:Предприятие 8 одним из ключевых вопросов является выбор версии СУБД. Системные администраторы часто сталкиваются с дилеммой: установить проверенную временем «рабочую лошадку» (например, MS SQL Server 2012 или 2014) или развернуть самый современный релиз. В этой статье мы подробно разберем, какую версию СУБД выбрать для стабильной работы 1С на примере базы с 40 активными пользователями программ 1С:Бухгалтерия и 1С:ЗУП, а также рассмотрим критически важные настройки СУБД, без которых невозможно добиться высокой производительности.
Рассмотрим опыт использования различных версий MS SQL Server в связке с платформой 1С. Некоторые администраторы до сих пор отдают предпочтение старым версиям, таким как MS SQL Server 2008 или 2012, аргументируя это их надежностью. Однако на практике использование устаревших СУБД несет в себе серьезные риски:
Поэтому при выборе СУБД мы рекомендуем ориентироваться на актуальные версии: MS SQL Server 2019 или MS SQL Server 2022.
Проанализируем технические особенности двух наиболее актуальных версий СУБД в контексте работы с 1С.
Особенность работы с гибридными процессорами Intel Core (12-го поколения и новее): Если ваш сервер 1С и СУБД разворачивается на базе современных процессоров Intel с гибридной архитектурой (сочетание производительных P-ядер и энергоэффективных E-ядер), версии MS SQL Server с 2012 по 2019 работают на них некорректно. Из-за неправильного распределения потоков планировщиком СУБД вы можете столкнуться с критическими просадками производительности или аварийным завершением работы службы SQL Server. В этом случае вашим безальтернативным выбором становится MS SQL Server 2022, в котором эта проблема решена нативно.
Нюанс с драйвером Native Client в SQL Server 2022: Начиная с версии 2022, Microsoft исключила компонент SQL Server Native Client (SNAC) из стандартного дистрибутива. Исторически платформа 1С использовала именно его для взаимодействия с базой данных. Чтобы избежать ошибок при подключении сервера 1С к MS SQL Server 2022, системным администраторам необходимо выполнить одно из двух действий:
SQL Server Native Client на сервер, где запущены рабочие процессы 1С.MSOLEDBSQL).Для компании с количеством одновременно работающих пользователей порядка 40 человек оптимальным выбором по соотношению стоимости и возможностей является редакция MS SQL Server Standard. Возможностей этой редакции (поддержка до 24 процессорных ядер и до 128 ГБ оперативной памяти под буферный пул) более чем достаточно для обслуживания баз Бухгалтерии и ЗУП указанного масштаба. Покупать дорогостоящую редакцию Enterprise в данном сценарии не имеет практического смысла.
Что касается лицензирования, для 40 рабочих мест наиболее экономически выгодной является схема «Сервер + CAL» (Server + Client Access Licenses). При этой схеме приобретается одна лицензия на сам сервер СУБД и 40 клиентских лицензий доступа (CAL) для пользователей. Лицензирование по ядрам (Core-based) обойдется значительно дороже и целесообразно только при численности пользователей свыше 70–100 человек или при публикации баз в веб-доступе для неограниченного круга лиц.
Просто установить СУБД по умолчанию недостаточно. Для обеспечения максимальной производительности и стабильности 1С системным администраторам необходимо произвести тонкую настройку СУБД. Разберем эти шаги по порядку.
По умолчанию SQL Server настроен так, чтобы забирать под свои нужды всю доступную оперативную память сервера. Если сервер приложений 1С (служба rphost) и СУБД работают на одном физическом или виртуальном сервере, SQL Server со временем полностью вытеснит процессы 1С из оперативной памяти в файл подкачки, что приведет к катастрофическому падению производительности.
Необходимо жестко ограничить максимальный объем памяти для SQL Server. Выделим операционной системе и процессам 1С как минимум 4–8 ГБ (из расчета примерно 1.5–2 ГБ на один рабочий процесс rphost), а оставшийся объем отдадим под СУБД. Настройку можно выполнить с помощью SQL-запроса:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 98304; -- Пример ограничения в 96 ГБ
RECONFIGURE;
Платформа 1С проектирует свои запросы таким образом, что параллельное выполнение одного запроса на нескольких ядрах процессора часто приводит к взаимным блокировкам (deadlocks) и перегрузке CPU. Рекомендуется установить параметр Max Degree of Parallelism (MAXDOP) равным 1. Это заставит СУБД выполнять каждый отдельный запрос на одном ядре.
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;
Если на сервере выполняются тяжелые нетиповые расчеты и параллелизм все же необходим, установим MAXDOP равным половине физических ядер процессора, но при этом обязательно увеличим порог стоимости параллелизма (cost threshold for parallelism) с дефолтного значения 5 до 50. Это предотвратит попытки СУБД распараллеливать легкие и быстрые транзакции:
EXEC sp_configure 'cost threshold for parallelism', 50;
RECONFIGURE;
Поскольку 1С:Предприятие активно использует временные таблицы при формировании отчетов и проведении документов, производительность базы tempdb напрямую влияет на общую скорость работы системы. Применим следующие правила оптимизации:
tempdb на самых быстрых накопителях (лучше всего использовать локальные NVMe SSD-диски).tempdb на несколько файлов данных одинакового размера. Количество файлов должно быть равно количеству логических ядер процессора, но не более 8 файлов (для предотвращения избыточных накладных расходов на распределение страниц).По умолчанию при расширении файлов базы данных операционная система зануляет выделяемый сектор диска, что при интенсивной работе 1С приводит к микрозависаниям системы (пользователи видят крутящийся курсор). Включение мгновенной инициализации файлов позволяет выделять место на диске мгновенно.
Для настройки предоставим учетной записи, от имени которой запускается служба SQL Server, право в групповых политиках Windows: Выполнение задач по обслуживанию томов (Perform Volume Maintenance Tasks). После этого перезапустим службу SQL Server.
Стандартные настройки авторасширения баз данных (прирост на 1 МБ или на 10%) приводят к сильной фрагментации файлов на диске и замедлению работы СУБД в моменты проведения документов. Изменим эти параметры вручную:
Подводя итог нашему анализу, сформулируем краткий ответ для системных администраторов:
«Устанавливаем Microsoft SQL Server 2019 или 2022 в редакции Standard (64-bit). После установки обязательно ограничиваем максимальный объем оперативной памяти под СУБД, отключаем параллелизм (MAXDOP = 1), переносим и оптимизируем файлы базы TempDB, настраиваем фиксированные шаги авторасширения баз и включаем мгновенную инициализацию файлов (IFI) в групповых политиках операционной системы».
Соблюдение этих рекомендаций позволит развернуть надежную, производительную и масштабируемую систему автоматизации, которая обеспечит стабильную работу пользователей 1С без зависаний и критических ошибок блокировок.