Как выбрать и настроить оптимальную версию Microsoft SQL Server для 1С:Предприятия 8

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При обновлении серверной инфраструктуры для работы решений на платформе 1С:Предприятие 8 одним из ключевых вопросов является выбор версии СУБД. Системные администраторы часто сталкиваются с дилеммой: установить проверенную временем «рабочую лошадку» (например, MS SQL Server 2012 или 2014) или развернуть самый современный релиз. В этой статье мы подробно разберем, какую версию СУБД выбрать для стабильной работы 1С на примере базы с 40 активными пользователями программ 1С:Бухгалтерия и 1С:ЗУП, а также рассмотрим критически важные настройки СУБД, без которых невозможно добиться высокой производительности.

Анализ версий: почему старые СУБД теряют актуальность

Рассмотрим опыт использования различных версий MS SQL Server в связке с платформой 1С. Некоторые администраторы до сих пор отдают предпочтение старым версиям, таким как MS SQL Server 2008 или 2012, аргументируя это их надежностью. Однако на практике использование устаревших СУБД несет в себе серьезные риски:

  1. Проблемы с блокировками: Как показывает практика многих компаний, СУБД MS SQL Server 2012 на современных релизах платформы 1С (начиная с 8.3.13 и новее) периодически провоцирует неявные и труднодиагностируемые блокировки таблиц. Переход на более современные версии СУБД полностью решает эту проблему.
  2. Прекращение поддержки: Microsoft давно прекратила официальную поддержку SQL Server 2008, 2012 и 2014. Это значит, что базы данных остаются без обновлений безопасности. Более того, фирма 1С в новых релизах своей платформы также постепенно отказывается от совместимости с устаревшими СУБД. Выбрав старую версию сегодня, вы создаете технологический долг на будущее.
  3. Отсутствие оптимизации под современное железо: Старые версии SQL Server не умеют эффективно распределять нагрузку на многоядерные процессоры современных серверов.

Поэтому при выборе СУБД мы рекомендуем ориентироваться на актуальные версии: MS SQL Server 2019 или MS SQL Server 2022.

Выбор между MS SQL Server 2019 и 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, системным администраторам необходимо выполнить одно из двух действий:

Выбор редакции и схемы лицензирования для 40 пользователей

Для компании с количеством одновременно работающих пользователей порядка 40 человек оптимальным выбором по соотношению стоимости и возможностей является редакция MS SQL Server Standard. Возможностей этой редакции (поддержка до 24 процессорных ядер и до 128 ГБ оперативной памяти под буферный пул) более чем достаточно для обслуживания баз Бухгалтерии и ЗУП указанного масштаба. Покупать дорогостоящую редакцию Enterprise в данном сценарии не имеет практического смысла.

Что касается лицензирования, для 40 рабочих мест наиболее экономически выгодной является схема «Сервер + CAL» (Server + Client Access Licenses). При этой схеме приобретается одна лицензия на сам сервер СУБД и 40 клиентских лицензий доступа (CAL) для пользователей. Лицензирование по ядрам (Core-based) обойдется значительно дороже и целесообразно только при численности пользователей свыше 70–100 человек или при публикации баз в веб-доступе для неограниченного круга лиц.

Критически важный чек-лист настроек MS SQL Server для 1С

Просто установить СУБД по умолчанию недостаточно. Для обеспечения максимальной производительности и стабильности 1С системным администраторам необходимо произвести тонкую настройку СУБД. Разберем эти шаги по порядку.

Шаг 1: Ограничение максимальной оперативной памяти (Max Server Memory)

По умолчанию 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;

Шаг 2: Настройка параллелизма (MAXDOP и Cost Threshold)

Платформа 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;

Шаг 3: Оптимизация базы TempDB

Поскольку 1С:Предприятие активно использует временные таблицы при формировании отчетов и проведении документов, производительность базы tempdb напрямую влияет на общую скорость работы системы. Применим следующие правила оптимизации:

  1. Разместим файлы базы данных tempdb на самых быстрых накопителях (лучше всего использовать локальные NVMe SSD-диски).
  2. Разделим tempdb на несколько файлов данных одинакового размера. Количество файлов должно быть равно количеству логических ядер процессора, но не более 8 файлов (для предотвращения избыточных накладных расходов на распределение страниц).

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

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

Для настройки предоставим учетной записи, от имени которой запускается служба SQL Server, право в групповых политиках Windows: Выполнение задач по обслуживанию томов (Perform Volume Maintenance Tasks). После этого перезапустим службу SQL Server.

Шаг 5: Настройка авторасширения файлов баз данных (Autogrowth)

Стандартные настройки авторасширения баз данных (прирост на 1 МБ или на 10%) приводят к сильной фрагментации файлов на диске и замедлению работы СУБД в моменты проведения документов. Изменим эти параметры вручную:

Подведем итоги

Подводя итог нашему анализу, сформулируем краткий ответ для системных администраторов:

«Устанавливаем Microsoft SQL Server 2019 или 2022 в редакции Standard (64-bit). После установки обязательно ограничиваем максимальный объем оперативной памяти под СУБД, отключаем параллелизм (MAXDOP = 1), переносим и оптимизируем файлы базы TempDB, настраиваем фиксированные шаги авторасширения баз и включаем мгновенную инициализацию файлов (IFI) в групповых политиках операционной системы».

Соблюдение этих рекомендаций позволит развернуть надежную, производительную и масштабируемую систему автоматизации, которая обеспечит стабильную работу пользователей 1С без зависаний и критических ошибок блокировок.

← На главную