Поиск неоптимальных запросов SQL при помощи DMV

05.03.26

Разработка - Рефакторинг и качество кода

Сервер SQL хранит у себя данные по текущему состоянию и выполнению запросов. Например, какой запрос сколько раз выполнялся и сколько времени было потрачено. В топ таких запросов часто будут попадать тяжелые запросы и неоптимальные - которые и нужно будет найти и оптимизировать.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Поиск неоптимальных запросов SQL при помощи DMV
.epf 16,74Kb
11 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Для обычных и управляемых форм.

На самом деле все просто... кратко про DMV

Обращаемся к служебным таблицам обычным SQL запросом и получаем, что там есть, включая текст запроса и план выполнения.

Сложности могут возникнуть только при отсутствии прав на эти таблицы.

Остаётся только найти в конфигураторе соответствующий запрос и исправить.

Функции по переводу SQL запроса в 1С взял у Андрея Бочкарева, спасибо!

 

Пример отчета:

 

Данные цифры говорят о том, что запрос номер 1 выполнялся 4873 раза и сервер SQL затратил в общей сумме 110 минут. 

Частая история к этой картине: В справочник добавили реквизит и ищут по этому реквизиту. При каждом поиске идет полное сканирование справочника, т.к. индекс забыли добавить. Выполнение одного такого запроса не заметно, но т.к. этот запрос выполняется много раз, то по сумме затрат он выходит в топ 1.

Детали, почему запрос тормозит, можно увидеть тут же в файле с планом запроса (связь по номерам запросов).

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.7.540

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Нейросети Рефакторинг и качество кода Запросы Разработчик 1С 8.3 Абонемент ($m)

Нейросеть написала запрос или процедуру для вашей базы 1С, и непонятно, все ли имена в нём настоящие. Обработка компилирует текст без выполнения, сверяет его с метаданными этой базы и к каждой ошибке пишет настоящее имя, например ВНаличииОстаток вместо выдуманного КоличествоОстаток. Список ошибок с подсказками одной кнопкой копируется обратно в чат с моделью.

10 стартмани

02.11.2026    353    1    nedomolkov.ivan    1    

2

Рефакторинг и качество кода Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

Одна проверка в обработчике кнопки может выглядеть достаточной, пока ту же операцию не вызовут из другого места. На примере управляемой формы разберём, почему так происходит, как разместить проверку в общей серверной функции и чем отличается удобная проверка ввода от обязательного условия выполнения операции.

29.10.2026    374    YA_777378709    0    

4

Рефакторинг и качество кода Разработчик Бесплатно (free)

Рассказываем, почему качественный код – это не техническая прихоть, а актив, который помогает бизнесу быстрее адаптироваться к изменениям и запускать новые фичи без бесконечного преодоления техдолга. Показываем, как объяснить бизнесу ценность рефакторинга через понятные признаки: замедление разработки, неточные оценки, страх перед legacy и хрупкость системы. Разбираем, почему неправильный рефакторинг может быть дороже его отсутствия, какие анти-паттерны ломают процесс и как не превратить улучшения в бесконечную переделку ради переделки. Объясняем, как сделать рефакторинг частью культуры команды: договориться с бизнесом, научить разработчиков видеть проблемные места, закрепить правила и поддерживать улучшения на уровне тимлидов, архитекторов и всей команды.

28.10.2026    485    Pavel791    0    

2

Рефакторинг и качество кода HighLoad оптимизация Системный администратор Разработчик Стажер 1С 8.3 Абонемент ($m)

Если к HTTP-сервису 1С обращаются сразу несколько программ, сколько запросов в секунду он успеет обработать? Я опубликовала простой HTTP-сервис на нашей "подопытной" конфигурации «Нано-УТ» (файловая база, Apache, без прав администратора) и нагрузила его скриптом на Python. Ответ: около 15-16 запросов в секунду, сколько бы клиентов ни обращалось одновременно. Запросы ждут своей очереди, и при 32 клиентах ответ приходит через 2 секунды вместо 64 мс. Заодно разобрала скрипт из первого варианта статьи: он «проверял» сервер, который отвечал по одному, и считал ошибки вместе с успешными ответами. В архиве исправленный скрипт, учебный сервер, HTTP-сервис для 1С и инструкция по запуску.

1 стартмани

23.10.2026    518    Ninel_S    3    

2

Рефакторинг и качество кода Разработчик 1С 8.3 Абонемент ($m)

Запустили Analyzer 1C 2.7.65 на промышленной конфигурации (596 модулей, 13 669 функций) и исследовали перегруженные функции (до 1887 строк), циклические зависимости и экран «Циклы» (кольцо из 64 модулей). Разобрали, почему популярные метрики (McCabe, связность) не представлены в продукте вендора, и составили пошаговый план разделения модуля. Привели проверенный платформой 8.3.27 пример до и после рефакторинга и выявили скрытую ловушку загрузки модулей с точкой в имени.

9 стартмани

19.10.2026    454    Ninel_S    2    

2

Рефакторинг и качество кода EDT СКД Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Одиннадцать граблей схем компоновки, которые не видно в конструкторе и не ловит EDT, на реальных отчетах БП КОРП. Формат числа задается в двух местах, и условное оформление варианта перебивает формат поля. Ресурс складывает штуки с часами, и помогает выражение «только когда единица одна». Ресурс пуст в детальных записях, параметр не появляется в шапке без userSettingID, valueListAllowed ломает границы периода, Остатки и СрезПоследних с параметром периода падают с «Несоответствием типов», title без xsi:type дает «Исключение XDTO» при загрузке. В конце код проверки схемы из файла до обновления базы, сводная таблица и чеклист.

16.10.2026    528    Konstmax13    2    

2

Инструментарий разработчика Нейросети Рефакторинг и качество кода EDT Разработчик 1С 8.3 1С 8.5 1С:Бухгалтерия 3.0 Бесплатно (free)

Как ИИ-агент (Claude Code) работает в живом EDT-проекте 1С:Бухгалтерии КОРП 3.0: из чего собрать стенд с MCP-сервером для EDT, как ставить задачи агенту, где он ломает проект и какие проверки это ловят. Реальные случаи: рукописные метаданные, ронявшие конфигуратор; четыре дня зависшего обновления из-за порядка блоков в Rights.rights; ошибки, которые EDT пропускает, а платформа нет; сплошная сверка вместо «вроде работает». В приложении шаблон CLAUDE.md, шаблон правила, чеклист перед обновлением базы и скрипты проверки ролей и схем СКД.

15.10.2026    3470    Konstmax13    11    

11

Рефакторинг и качество кода Тестирование QA Разработчик 1С 8.3 Абонемент ($m)

Инженерный анализ влияния (Impact Analysis) при изменении общего метода в 1С:Предприятии: почему штатный поиск ссылок скрывает 99% зависимостей и как обратный обход графа вызовов выявляет 370 скрытых потребителей на глубине 3 уровней. В статье — верификация сквозной цепочки обмена с маркетплейсом; в архиве-компаньоне — автономный BFS-анализатор на Python, слепки графа и план регрессионного тестирования.

1 стартмани

12.10.2026    325    Ninel_S    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 1146 06.10.25 09:41 Сейчас в теме
Не информативно ни разу....
ixijixi; akR00b; +2 – Ответить
4. Alex_Smolensky 115 07.10.25 14:06 Сейчас в теме
(1) добавил описание
2. akR00b 26 06.10.25 10:26 Сейчас в теме
Для ОФ будет работать?
3. Alex_Smolensky 115 06.10.25 11:17 Сейчас в теме
(2) реализовано только для управляемых форм, для обычных нет.
17. Alex_Smolensky 115 12.11.25 20:51 Сейчас в теме
(3) (2) реализовал и для обычных форм
5. ОператорПК 2 29.10.25 08:57 Сейчас в теме
Здравствуйте. По поводу "Сервер SQL хранит у себя данные по текущему состоянию и выполнению запросов" - а за какой период хранятся данные там? Для конфигураций без БСП не будет работать? На ОФ переписать - проблема (сколько времени по Вашим оценкам)?
6. Alex_Smolensky 115 29.10.25 09:50 Сейчас в теме
(5) согласно документации, счетчики хранятся с момента старта SQL сервера. Но на серверах, что у нас в компании, они сбрасываются 1-2 раза в сутки. Возможно, что это управляется настройками или скриптами.

Для обработки БСП не требуется, все что нужно есть внутри. Нужно было указать какую-нить конфигурацию.

Доработаю и для обычных форм, к началу следующей недели.
16. Alex_Smolensky 115 12.11.25 20:51 Сейчас в теме
(5) добавил работу в обычных формах
18. ОператорПК 2 14.11.25 13:08 Сейчас в теме
(16) Спасибо! Скачал! В обычных формах, в строке "driver={SQL Server};server=ИМЯ_СЕРВЕРА;Trusted_Connections=yes;database=ИМЯ_БАЗЫ" поменял Имя сервера (оно по IP адресу) и Имя базы примерно вот так: driver={SQL Server};server=Х.Х.Х.Х;Trusted_Connections=yes;database=Х Этого должно быть достаточно для подключения к СКЛ серверу?
19. Alex_Smolensky 115 14.11.25 13:10 Сейчас в теме
(18) если настройка доступа к SQL сделана по доменной записи, то достаточно. Если этого нет и доступ по логину и паролю, то нужно ввести строку с указанием логина и пароля
20. ОператорПК 2 14.11.25 13:29 Сейчас в теме
(19) сейчас у меня так: есть терминальный сервер с IP адресом у.у.у.у на нем установлена платформа 1С с него я захожу в 1С, Есть СКЛ сервер с IP адресом х.х.х.х, есть еще отдельно сервер 1С-Предприятия с IP адресом z.z.z.z -тут я без проблем через консоль 1С добавляю базы/удаляю и т.д. при этом например при добавлении базы я явно указывая учетку СКЛ сервера "sa" и пароль от нее... Тут на терминальном сервере в Вашей обработке я так понимаю тоже нужно где-то указать "sa" и пароль от нее? если "Да" то можете пульнуть пример? такой строки типа "driver={......... =ИМЯ_БАЗЫ"
21. Alex_Smolensky 115 14.11.25 13:32 Сейчас в теме
(20) sa - это скорее всего, пользователь сервера 1С. А тут нужен доступ к SQL серверу и там пользователь будет другой.
22. ОператорПК 2 14.11.25 14:20 Сейчас в теме
(21) нет. sa используется при подключении к SQL Management Studio. См вложение.
Прикрепленные файлы:
23. ОператорПК 2 15.11.25 10:16 Сейчас в теме
(21) Так что на счет примера строки подключения где были бы логин/пароль от SQL?
24. Alex_Smolensky 115 15.11.25 10:31 Сейчас в теме
(23) driver={SQL Server};server=ИМЯ_СЕРВЕРА;uid=ВАШ_ЛОГИН;pwd=ВАШ_ПАРОЛЬ;database=ИМЯ_БАЗЫ;
25. ОператорПК 2 15.11.25 18:07 Сейчас в теме
(24) Спасибо. Получилось. Найти в базе запрос конечно по тому, что в эксель выгружается как "ТекстЗапроса1С" - это прям целое искусство, тут все запросы делятся на два вида: что то найти трудно, что то не реально....
7. ОператорПК 2 29.10.25 13:41 Сейчас в теме
(5) Спасибо. А как то в целом "фильтровать" входящие запросы можно? Например брать только те что за последние пять дней или брать последних 100 тыс запросов?
8. ОператорПК 2 29.10.25 17:56 Сейчас в теме
(6) Спасибо. А как то в целом "фильтровать" входящие запросы можно? Например брать только те что за последние пять дней или брать последних 100 тыс запросов?
9. Alex_Smolensky 115 29.10.25 18:13 Сейчас в теме
(8) список запросов выводится в порядке убывания затрат SQL сервера, т.е. ищем топ 20 или топ 100 запросов, которые больше всего нагружают SQL сервер.
Суть обработки в том, что бы найти запросы, которые нужно исправить. Все остальные 100 тыс запросов смотреть не нужно.

Отвечая еще на предыдущий вопрос: Статистика может сбрасываться по отдельным запросам из-за изменения структуры таблиц.
10. ОператорПК 2 30.10.25 08:08 Сейчас в теме
(9) Как работает обработка в целом понятно. Не понятно как "фильтровать" нужное от не нужного. Например "День1": обработка выдала в топе 3 запроса которые дают "максимальные затраты СКЛ", программист корректирует работу с запросами: либо исправляет сами запросы либо уменьшает частоту их выполнения. "День 2": если ни как не скорректировать данные СКЛ (которые содержат статистику) то эти же 3 запроса опять выходят в ТОП т.к. накоплены они с "согласно документации, счетчики хранятся с момента старта SQL сервера.".... Что делать программисту, он даже не в силах оценить помогли его доработки или нет? Очевидно что либо как то принудительно сбрасывать статистику в "День 1" либо что ИМХО правильней - иметь возможность при обращении к СКЛ брать данные "за период" ("за вчера" или за "пять дней последних" или "за сегодня") или хотя бы "сказать" СКЛ что меня статистика от момента старта не интересует, "дай статистику за последние 10 тыс. запросов".
11. Alex_Smolensky 115 30.10.25 12:03 Сейчас в теме
(10) Данная статистика формируется SQL итогово и связана с кэшем планов запроса. Если Запрос изменен - это уже другой запрос и план другой. В описанном случае, как понять, что программист исправил запрос - стоит обратить внимание на дату последнего вызова.
Старый запрос больше не будет выполняться и если новый в статистику не попадет - значит все исправлено.
Данные по старому запросу уйдут из кэша за 1-2 дня и из статистики то же исчезнут.
У SQL есть вот такой механизм, как описал выше. А вот как получить данные за 5 или 10 дней я не знаю.
В своей работе, а нахожу запросы, правлю и они уходят из отчета через день-два. Эта обработка для этого.
12. ОператорПК 2 30.10.25 16:23 Сейчас в теме
(11) А СКЛ нужно как настраивать чтобы работало "Данные по старому запросу уйдут из кэша за 1-2 дня и из статистики то же исчезнут."? Просто ранее Вы писали "согласно документации, счетчики хранятся с момента старта SQL сервера".
13. Alex_Smolensky 115 31.10.25 09:32 Сейчас в теме
(12) Если план запроса из кэша не уйдет, то он будет храниться с начала старта сервера.
14. ОператорПК 2 31.10.25 13:40 Сейчас в теме
(13) как то можно управлять "уходом плана запроса из кеша"?
15. Alex_Smolensky 115 31.10.25 14:45 Сейчас в теме
(14) тут я не подскажу, не на столько хорошо я знаком с SQL
26. Alex_Smolensky 115 05.03.26 12:14 Сейчас в теме
Схема системных таблиц SQL 2012.
Прикрепленные файлы:
SQL_Server_2012_System_Views_Map.pdf
Для отправки сообщения требуется регистрация/авторизация