Графический план выполнения запроса 1С

05.09.17

Разработка - Инструментарий разработчика

Публикация размещена исключительно в образовательных целях и подходит только для платформы версии 8.28.3.
Использует недокументированные средства доступа к базе данных 1С. Прямое обращение к СУБД нарушает лицензионное соглашение,
может изменить поведение платформы, привести к разрушению базы данных, скомпрометировать данные,
а также привести к отказу в официальной поддержке Фирмы 1С.
Просмотр графического отображения плана выполнения для запросов 1С. Для информационных баз на MS SQL Server.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Просмотр графического отображения плана выполнения для запросов 1С
.epf 18,50Kb ver:1.03
72
72 Скачать (1 SM) Купить за 1 850 руб.

Построение плана выполнения для запросов 1С

Описание

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

Данная обработка не использует ни технологический журнал, ни трассировку SQL Server. Таким образом запуск обработки не приводит к деградации производительности и не накладывает требований по наличию прав доступа к хосту сервера приложений. Планы выполнения достаются непосредственно из кеша планов SQL Server.

v1.03.

Требования

Клиент-серверная ИБ на MS SQL Sever 2005 или выше. Управляемые формы.

Платформа 8.2 или 8.3.

У пользователя SQL Server - право "VIEW SERVER STATE".

У пользователя 1С - право "Интерактивное открытие внешних обработок".

Изменения в метаданных не требуются.

Использование

При нажатии на кнопку "Получить план выполнения запроса" в табличный документ выводится статистика выполнения - по строке на каждый запрос из пакета.

Расшифровка строки (по двойному щелчку мышки) позволяет открыть план выполнения в виде графического отображения или как файл в формате XML.

Для графического отображения плана выполнения требуется установленная среда SQL Server Management Studio.

план выполнения запрос sql server

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159328    872    399    

861

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7748    55    22    

66

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

9360 руб.

17.05.2024    23407    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 8500 руб.

10.11.2023    10403    36    20    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 19980 руб.

06.10.2023    15383    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    187959    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17295    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7690    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 24.06.17 23:28
Сообщение было скрыто модератором.
...
3. пользователь 25.06.17 01:14
Сообщение было скрыто модератором.
...
5. пользователь 25.06.17 10:49
Сообщение было скрыто модератором.
...
6. Gilev.Vyacheslav 1917 25.06.17 11:31 Сейчас в теме
(1)
(5)Тогда так http://www.gilev.ru/#ConsoleGilevRu учетка Пользователь без пароля
7. berezdetsky 624 25.06.17 12:08 Сейчас в теме
(6) Моя обработка не использует техжурнал и, как следствие, не приводит к дополнительной нагрузке и не накладывает требований по наличию прав доступа к хосту сервера приложений. Я достаю планы выполнения непосредственно из кеша планов SQL Server.

Ваш подход в целом точнее, но затратнее.
9. Gilev.Vyacheslav 1917 25.06.17 14:54 Сейчас в теме
(7) логирование в ТЖ одной сессии создает настолько мизерные затраты, что говорить что это "более затратное" самообман
10. berezdetsky 624 25.06.17 22:08 Сейчас в теме
(9) Я говорю о затратах не столько технических, сколько организационных. Для ларьков эти затраты действительно мизерные.
11. Gilev.Vyacheslav 1917 26.06.17 23:13 Сейчас в теме
(10) а что по вашему лучше, логин с авторизацией на субд или без авторизации в какую либо базу данных на сервере 1С?

это если обсуждать "запятые", главное что в нашей обработке - двойной эврестический анализ плана запроса, т.е. не просто отображение, а переработка плана анализом и отображение проблем с рекомендациями как исправить, даже фирма 1С не смогла ничего подобного написать
13. zarucheisky 27.06.17 00:17 Сейчас в теме
16. herfis 513 27.06.17 15:05 Сейчас в теме
(11)
даже фирма 1С не смогла ничего подобного написать

Не первый раз слышу в такой формулировке и каждый раз улыбаюсь. Вы, безусловно, молодцы, но формулировка улыбает.
Типа 1С всей фирмой пыталась-пыталась, пыталась-пыталась и таки не смогла - "фух, не могу больше, не выходит каменный цветок. Такое только команде самого Гилева под силу".
JohnyDeath; ivv1970; TreeDogNight; RailMen; Bukaska; +5 Ответить
18. Gilev.Vyacheslav 1917 28.06.17 09:55 Сейчас в теме
(16) если не следили за развитием ЦУПа, то иронию понимаю, а вот если следили... )))
12. zarucheisky 27.06.17 00:16 Сейчас в теме
(10) Ваня :)
Это кому там понадобилось-то?
"Неужели в наших котлетах будет мясо?" (с)
Эх.. Ромы на вас нет :))))
15. berezdetsky 624 27.06.17 11:18 Сейчас в теме
(12) Привет! Мне и понадобилось. :) Как говорится, делал как для себя. :)
14. zarucheisky 27.06.17 00:25 Сейчас в теме
(10) ИМХО, ежели MS SSMS перекрыт вместе с MS VS, то можно воспользоваться
http://www.atlantis-interactive.co.uk/api/applicationdownload.ashx?key=ASE
20. artbear 1563 28.06.17 11:07 Сейчас в теме
(7) Иван, хорошая работа, спасибо!

ИМХО цитату хорошо бы включить в описание публикации
"Моя обработка не использует техжурнал и, как следствие, не приводит к дополнительной нагрузке и не накладывает требований по наличию прав доступа к хосту сервера приложений. Я достаю планы выполнения непосредственно из кеша планов SQL Server. "
2. unichkin 1579 25.06.17 00:20 Сейчас в теме
Есть еще бесплатная утилита SQL Sentry Plan Explorer для чтения планов. Если скрестить ее с этой консолькой, то и студия на клиенте не нужна...
4. berezdetsky 624 25.06.17 10:02 Сейчас в теме
(2) SSMS - бесплатный инструмент от вендора СУБД. Более функциональный, чем Plan Explorer.
30. kirinalex 16 18.11.19 08:12 Сейчас в теме
(4)
SSMS
в чем именно SQL Server Management Studio более функциональный, чем SentryOne Plan Explorer?
8. herfis 513 25.06.17 12:59 Сейчас в теме
Возможность обойтись без тех-журнала - несомненный плюс.
17. zekrus 150 28.06.17 08:21 Сейчас в теме
Доброе утро!
Решение востребованное без условно.
Меня терзают смутные сомнения, вы
не из компании "Раздолье" случайно?
С уважением
19. zarucheisky 28.06.17 10:56 Сейчас в теме
(17) Нет, если не ошибаюсь, Иван трудится в иной компании :)
21. berezdetsky 624 28.06.17 12:55 Сейчас в теме
(17) Нет.

(20) :) Ok, добавлю в описание.
22. sevushka 303 19.07.17 06:34 Сейчас в теме
Мелкие нюансы, для будущих поколений :)
ProgId = "V" + XMLСтрока(ВерсияПриложения.Основная) + XMLСтрока(ВерсияПриложения.Младшая) + ".COMConnector";
Основная а не старшая. По крайней мере для 8.3.8


If Cluster.HostName = HostName Then
надо приводить к одному регистру, иначе не срабатывает (в строке подключения стоит uppercase например, а в Cluster.HostName lowercase)
26. berezdetsky 624 24.07.17 23:29 Сейчас в теме
(22) .. (25) Спасибо за комментарии. Основные косяки исправил, но пока не выкладывал.

Про dsn не понял. У меня named pipes везде выключены. По tcp/ip и shared memory подключается без проблем.

qp.dbid = null на 1Сных запросах не видел. Покажи пример запроса и версии 1С и SQL Server, пожалуйста.

По сопоставлению - для пакета порядок запросов в пределах секунды иногда нарушается. При этом сопоставление пока не работает.
Если не работает для одного запроса - опять же давай тестовый пример.
27. sevushka 303 25.07.17 07:24 Сейчас в теме
(26)
По пунктам. Копать наверное в сторону 1С, но куда именно пока не понимаю.
Microsoft SQL Server Management Studio 10.50.6220.0
Компоненты доступа к данным (MDAC) 6.3.9600.17415
ОС на клиенте - не принципиально, вин 7,10, 2012...

1с - 8.3.8.1964,
если СтрокаПодключения = "Provider=SQLNCLI10;Server=" + ИмяСервера + ";Database=" + ИмяБазыДанных + ";"
Не работает, выдает что не может подключиться через named pipes
если СтрокаПодключения = "Provider=SQLNCLI10;Server=tcp:" + ИмяСервера + ";Database=" + ИмяБазыДанных + ";"
Так работает.


8.3.10.2466.
Работают оба варианта, и оба лезут через tcp.

Пример выше - это два разных компа, может и не в 1с проблема. Особо разбираться некогда.


qp.dbid = null - не понимаю что показывать. там много разных запросов, где дбид нулл.


по сопоставлению. Запросы типа

выбрать т1.ссылка из документ.реализациятоваровуслуг как т1 где т1.ссылка=&оно


отрабатывают и все находят и сопоставляют, но толку то мне от них?.
Запросы посложнее, типа
ВЫБРАТЬ
	Т1.ОснованиеПлатежа,
	Т1.Сумма,
	ВЫБОР
		КОГДА 1 В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					1
				ИЗ
					Справочник.ЕПБ_ДопИнформация КАК ДИ
				ГДЕ
					ДИ.Документ = Т1.ОснованиеПлатежа
					И ДИ.КодСобытия = 2
					И ДИ.ПометкаУдаления = ЛОЖЬ)
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК БылаЧастичнаяОплата
ИЗ
	Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК Т1
ГДЕ
	Т1.Ссылка = &ДокПКО
Показать



со включенной галочкой "показать все доступные запросы" отлавливаются,
sql


Но не сопоставляются, т.е. если эту галочку убрать, то таблица снизу пустая.


И таких запросов тоже много, и не пакетных, и пакетных. Просто привел пример для самого простого из таких.
28. berezdetsky 624 25.07.17 23:31 Сейчас в теме
(27) Выложил исправленную версию с улучшенным сопоставлятором.

По named pipes возьму таймаут - поиграюсь с разными версиями.

Сопоставление идеальное не получится, т.к. СхемаЗапроса разбирает не все секции запроса, а писать свой парсер - проще профайлер запустить.. Можно пойти в другую сторону - показывать в SSMS в плане выполнения имена метаданных 1С.
23. sevushka 303 19.07.17 07:26 Сейчас в теме
Продолжение (не могу исправлять предыдущее сообщение)
СтрокаПодключения = "Provider=SQLNCLI11;Server=" + ИмяСервера + ";Database=" + ИмяБазыДанных + ";";
не у всех есть 11, кто-то и на 10 сидит (SQL - 2008R2).

Далее. Еще надо настраивать dsn, по умолчанию он лезет через named pipes, а на некоторых серверах (например моем) они выключены, надо использовать tcp/ip (или менять строку подключения, или включать каналы на сервере).

Ну и в итоге - не сработало. Подключилось (причем пользователя давал и датабейз овнера, и sa, и domain authorization - разницы нет). Запрос выполняется, колонки таблицы тз в ВыполнитьЗапросSQL заполняются, но запрос пустой.
Если Не Recordset.EOF Тогда <---- здесь истина, т.е. данных нет. Время на клиенте и сервере совпадает.

Такое впечатление, что программе надо SQL 2012 или новее, о чем надо сообщать заранее. Ну или какие-то настройки на сервере дополнительные нужны.
24. sevushka 303 19.07.17 07:55 Сейчас в теме
Автору на заметку
Добавляю в текст запроса
, qp.query_plan AS ПланВыполнения
, qp.dbid as ИДБазы <-------- вот эту строчку. И у меня, для многих баз, qp.dbid = null.
Соответственно, в условии
and qp.dbid = db_id()

null не равен 10 (id моей базы)
25. sevushka 303 19.07.17 09:07 Сейчас в теме
Ну и на закуску
Убираю в запросе строчку and qp.dbid = db_id(), чтобы были все запросы.

Делаю примитивный запрос к одной таблице.
Доходит до
Процедура СопоставитьЗапросы(СтатистикаВыполнения)
СтатистикаВыполнения - таблица, где мой запрос есть.
Но... он не сопоставляется. Можно поставить галочку "показывать все доступные запросы", тогда запрос виден в таблице, но его еще надо найти в куче.
Разбираться уже не стал, почему сопоставление не работает.

а еще в таблице результатов при даблклике {(2,62)}: Переменная не определена (ЭтотОбъект)
Новый ОписаниеОповещения("ОповещениеОВыбореРежимаОткрытия", <<?>>ЭтотОбъект, Расшифровка),

т.е. для конфигураций, которые еще работают в режиме совместимости, это тоже не работает.



Обработку скачивать не рекомендую.
29. user617199_pablonikolaev 26.07.17 09:36 Сейчас в теме
31. tormozit 7229 18.11.19 09:40 Сейчас в теме
Аналогичный инструмент "Статистика по запросам MSSQL" есть в подсистеме Инструменты разработчика . Он также использует процедурный кэш MSSQL и не создает какой либо нагрузки на работу серверов. В этой же подсистеме в инструменте "Консоль запросов" на странице "Запрос результата" с помощью кнопки "Статистика MSSQL" можно посмотреть статистику по последнему выполненному запросу.
Прикрепленные файлы:
e9504100606; Drivingblind; triviumfan; t278; +4 Ответить
Оставьте свое сообщение