Сопровождение высоконагруженных информационных систем на базе платформы 1С:Предприятие и СУБД MS SQL Server требует непрерывного контроля за производительностью. При работе с масштабными базами данных администраторы и эксперты сталкиваются с необходимостью отслеживать узкие места системы, анализировать неоптимальные запросы и предотвращать эскалацию блокировок. Проанализируем, почему универсальные сторонние разработки в виде исполняемых файлов не пользуются популярностью на продуктивных серверах, и разберем проверенные инструменты и практические методики оптимизации связки 1С и MS SQL Server.
При поиске решений для отлова узких мест разработчики иногда создают собственные утилиты и предлагают их сообществу. Однако администраторы баз данных (DBA) и эксперты 1С практически никогда не запускают сторонние исполняемые файлы (.exe) с закрытым кодом на боевых серверах.
Разберем основные причины такого поведения:
Рассмотрим штатные и специализированные решения, которые применяются для круглосуточного отслеживания состояния высоконагруженных баз данных без создания критической нагрузки на сервер.
Типовой Корпоративный инструментальный пакет (КИП) от компании 1С включает инструмент ЦУП, предназначенный для анализа узких мест многопользовательской трехзвенной архитектуры. Он позволяет связывать задержки на уровне платформы 1С с конкретными вызовами и ожиданиями на уровне СУБД. Однако при постоянной работе ЦУП может накапливать огромные объемы данных, поэтому для режима 24/7 его часто настраивают точечно или включают по мере необходимости.
Начиная с MS SQL Server 2016, в СУБД встроен мощный механизм Query Store. Он автоматически собирает историю выполнения запросов, планов и статистики ресурсов (CPU, Memory, I/O). Это позволяет легко находить запросы с регрессией производительности, сравнивать разные планы выполнения и фиксировать заведомо оптимальный план без изменения кода 1С.
Встроенный механизм Data Collection в MS SQL Server собирает основные метрики СУБД в системную базу данных. Для постоянного фиксатора проблемных запросов вместо тяжелого SQL Profiler применяют Extended Events (Расширенные события). Настройка асинхронной фиксации событий (например, sql_statement_completed или xml_deadlock_report) с порогом по длительности создает нагрузку на CPU в пределах 1–2%, что делает его безопасным для применения 24/7.
Для непрерывного мониторинга на стороне 1С настраивают сбор Технологического журнала (ТЖ) с жесткой фильтрацией. Чтобы не переполнять диск, собирают только события ошибок и долгих операций (EXCP, TLOCK, TDEADLOCK, DBMSSQL) с ограничением по длительности (например, duration > 5000000 микросекунд).
Для глубокого анализа применяются зарекомендовавшие себя коммерческие и облачные системы, такие как PerfExpert или специализированные сервисы анализа производительности 1С, которые работают через безопасный сбор метрик без вмешательства в структуру СУБД.
Выясним, с какими специфическими техническими проблемами наиболее часто сталкиваются высоконагруженные системы 1С на базе MS SQL Server:
sp_executesql. Оптимизатор MS SQL компилирует план при первом вызове. Если данные в таблицах распределены неравномерно, закэшированный план может оказаться крайне неэффективным для других параметров.Index Seek на полное сканирование Index Scan.PAGELATCH_UP и PAGELATCH_EX.Repeatable Read / Serializable), вызванная эскалацией блокировок и взаимными блокировками (Deadlock).Проанализируем комплекс обязательных настроек сервера СУБД для обеспечения высокой скорости работы 1С:
READ_COMMITTED_SNAPSHOT (RCSI). Это позволяет запросам чтения брать данные из версионного хранилища TempDB без наложения блокировок чтения, исключая конфликты между считывающими и записывающими транзакциями.TF 1117 (равномерное расширение файлов) и TF 1118 (выделение полных экстентов).MAXDOP (максимальное число ядер на один запрос) и существенно повышают порог стоимости параллелизма Cost Threshold for Parallelism со стандартного значения 5 до 50 и выше. Это защищает систему от распараллеливания коротких транзакций 1С.Perform Volume Maintenance Tasks (Instant File Initialization), что позволяет мгновенно выделять дисковое пространство под файлы базы без их заполнения нулями.Таким образом, полноценное сопровождение высоконагруженной системы 1С базируется на сочетании штатных механизмов СУБД, профилированного ТЖ и правильной тонкой настройки параметров MS SQL Server.