SQL_PERF_BOTTLENECK
1С:Предприятие и СУБД
SQL Server Profiler и Activity Monitor: как найти тормозящие запросы 1С
- 1С начинает сильно зависать в произвольные моменты времени.
- Загрузка процессора на сервере СУБД подскакивает до 100%.
- Пользователи жалуются на долгое проведение простых документов или зависание отчетов.
- Администратору нужно понять, какой именно пользователь или отчет перегружает SQL Server.
Способ 1. Быстрый мониторинг через Activity Monitor (Монитор активности)
- Откройте SQL Server Management Studio (SSMS).
- Нажмите правой кнопкой мыши на имя сервера в дереве слева → выберите Activity Monitor (или нажмите Ctrl + Alt + A).
- Раскройте вкладку Active Expensive Queries (Активные ресурсоемкие запросы):
- Отсортируйте список по колонке CPU (ms/sec) или Duration (ms).
- В верхних строках будут самые «тяжелые» запросы, которые выполняются прямо сейчас.
- Нажмите правой кнопкой на строку с запросом → Show Execution Plan, чтобы увидеть текст запроса и проблемные таблицы 1С.
Способ 2. Трассировка долгих запросов через SQL Server Profiler
- В SSMS перейдите в меню: Tools (Сервис) → SQL Server Profiler.
- Подключитесь к серверу, выберите шаблон Standard.
- Перейдите на вкладку Events Selection (Выбор событий):
- Отметьте события:
RPC:CompletedиSQL:BatchCompleted. - Нажмите кнопку Column Filters... (Фильтры столбцов).
- Выберите Duration → Greater than or equal → укажите
5000(отбирать только запросы, выполняющиеся дольше 5 секунд). - Выберите DatabaseName → Like → укажите имя вашей базы 1С.
- Отметьте события:
- Нажмите Run. В окне в реальном времени начнут появляться только те запросы 1С, которые реально тормозят систему.
Практический опыт инженера:
Для постоянного мониторинга продуктивных баз используйте встроенные Расширенные события (Extended Events) со сбросом данных в кольцевой буфер или технологический журнал 1С с настроенным сбором событий DBMSSQL с фильтром по длительности.
Частые вопросы (FAQ)
Сильно ли SQL Server Profiler нагружает сервер при работе?
Если не поставить фильтр по Duration или имени базы, профилировщик будет собирать миллионы событий и создаст ощутимую дополнительную нагрузку. С правильными фильтрами нагрузка минимальна.
Как по непонятному тексту запроса SQL понять, какой это документ в 1С?
Найдите в запросе имена таблиц (например, _Document123) и сопоставьте их через Конфигуратор или функцию ПолучитьСтруктуруХраненияБазыДанных().
Что такое Extended Events и почему Microsoft рекомендует их вместо Profiler?
Extended Events (Расширенные события) — это современный легковесный механизм мониторинга внутри самого SQL Server, пришедший на смену старому Profiler.
Что чаще всего является причиной долгих запросов в 1С?
Отсутствие индексов по реквизитам отбора, запросы в цикле, использование подзапросов в соединениях и неоптимальные отчеты без ограничения периода.