gifts2017

Techlogqueryviewer - Вьювер запросов к СУБД из технологического журнала 1С: Предприятие

Опубликовал kav kav (alexkmbk) в раздел Программирование - Инструментарий

Обработка для отображения текстов запросов, формируемых платформой 1С: Предприятие в том виде, в каком они должны быть выполнены на СУБД. Тексты запросов обработка получает из технологического журнала по мере их там постепенного появления. Генерация запросов может вестись как в обычном, так и в управляемом режиме, но сама обработка работает только в обычном режиме.

История 

Проект изначально был размещен на хостинге Google Code в декабре 2011 года, однако впоследствии был перенесен на Github из-за того, что на Google Code была отключена возможность размещения новых файлов для скачивания.

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

Условия распространения

Лицензия: MIT Licence

Как пользоваться

Для того, чтобы начать вывод текстов запросов, необходимо нажать на кнопку "Старт". При этом, вывод текстов начнется с некоторой задержкой (до 60-ти секунд) и, конечно, при условии, что в данный момент выполняются запросы к СУБД. Задержка связана с тем, что при включении записи в технологический журнал, платформа начинает эту запись не сразу. В дальнейшем, когда запись в технологический журнал начата, задержка на не нагруженных базах может составить порядка 1-2 секунды после выполнения запроса, на нагруженных - значительно большее время, в этом случае, задержка уже связана с необходимостью постоянного чтения файлов технологического журнала с диска, а также посимвольной обработкой текста что при значительном количестве запросов может стать ресурсоемкой задачей.

Для того, чтобы остановить вывод, необходимо нажать на кнопку "Стоп".

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

Для того, чтобы тексты запросов были представлены с наименованиями объектов, заданных в конфигураторе, а не в виде имен СУБД, необходимо установить флажок "Получать имена объектов по метаданным". Т.е. например в конфигураторе у объекта установлено имя "РегистрСведений.ЦеныНоменклатуры", тогда как в СУБД этот объект может называться скажем "InfoRg15". При включении данного флажка, в текстах запросов регистр будет обозначаться так, как он и называется в конфигураторе т.е. "РегистрСведений.ЦеныНоменклатуры", а не "InfoRg15". Стоит сказать, что в текущей версии обработки, установка флажка не приводит к 100% представлению наименований в том виде в каком они заданы в конфигураторе, это связано с несовершенством алгоритма.

Для того, чтобы очистить окно вывода, необходимо нажать на кнопку "Очистить". При этом, будет очищено только окно вывода, файлы технологического журнала останутся не тронутыми.

Поле "Отбор по тексту" предназначено для отбора запросов по входящим в них словам. Например, среди найденных, есть куча запросов к таблице "УстановкаЦенНоменклатуры", для того, чтобы отобразить только запросы к таблице "УстановкаЦенНоменклатуры" достаточно в поле "Отбор по тексту" написать - "УстановкаЦенНоменклатуры" (без кавычек) и нажать Enter.

Как это работает

При нажатии на кнопку "Старт", в каталоге "Путь к каталогу установки 1С: Предприятие\conf" (например "C:\Program Files\1cv82\8.2.15.294\bin\conf") создается файл "logcfg.xml" с настройками, необходимыми для того, чтобы в технологический журнал начала записываться информация о выполняемых запросах к СУБД. Если файл "logcfg.xml" уже существует, то он переименовывается в "backup_logcfg.xml_порядковый номер копии" и вместо него, создается новый файл настроек. При закрытии обработки, сохраненная версия файла настроек восстанавливается. Если сохраненных копий не создано, то при закрытии, файл настроек просто удаляется и запись в технологический журнал прекращается. Таким образом все устанавливается в то состояние, которое было до запуска обработки. После того как файл "logcfg.xml" создан, по прошествии определенного количества времени (60 секунд максимум) начинается запись в технологический журнал - в файлы текстового формата. Обработка в фоновом режиме выполняет постоянное построчное чтение файлов технологического журнала и если обнаружено событие с текстом запроса, появившееся уже после нажатия на кнопку "Старт" - выводит его на экран.

Файлы технологического журнала располагаются в каталоге "Путь к каталогу установки 1С: Предприятие\conf\logs_techlogqueryviewer" - данный путь указывается в файле настроек "logcfg.xml". После закрытия обработки, файлы технологического журнала не удаляются, предполагается что пользователь удалит их в ручную, при этом, сразу же удалить означенные файлы скорее всего не получится, поскольку доступ к ним ограничен работающим сервером.

Обработка может быть использована как на файловой так и на клиент-серверной версии.

Как скачать

Ссылка на страницу загрузки с GitHub-репозитория: https://github.com/alexkmbk/techlogqueryviewer/releases

Скачать файлы

Наименование Файл Версия Размер
techlogqueryviewer - v2.5.epf 2
.epf 21,12Kb
15.08.16
2
.epf 2.5 21,12Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Hromov Anton (hromovanton) 15.08.16 10:04
Расскажите, пожалуйста, более подробно о настройках logcfg.xml, какие именно запросы будут записываться в лог. Неужели все подряд? А если мне нужны, например, только те запросы, которые выполняются более 3 секунд. Или только запросы по определенной базе данных и т.д.?
2. Александр Губанов (gubanoff) 15.08.16 10:22
(0) Так уже давно есть консоль от 1С с таким же функционалом, плюс в Инструментах разработчика тоже давненько все есть.
3. kav kav (alexkmbk) 15.08.16 11:16
(1) hromovanton, Да, все запросы подряд. Надо сказать что не ставилась задача анализа запросов с целью оптимизации какой-то конкретной, рабочей базы данных. На рабочей базе будет столько запросов что этот вьювер просто захлебнется. Задача была создать удобный инструмент который бы позволял понять что происходит под капотом, например, как работает RLS или динамический список. То есть эта обработка больше подойдет для обучения, нежели для анализа производительности.
4. kav kav (alexkmbk) 15.08.16 11:19
(2) gubanoff, А как называется консоль от 1С? Знаю консоль для настройки технологического журнала, но для вывода запросов в реалтайме не попадалась именно от 1С. В ЦУП-е что-то было, но совсем другое и платное.
5. kav kav (alexkmbk) 15.08.16 11:33
(1) hromovanton, короче основное назначение - визуализация в реалтайме, а не на анализ.
6. Сан Саныч (herfis) 15.08.16 11:34
(4) alexkmbk, Есть еще ИТС-ная "Просмотр технологического журнала". Наверное, о ней речь.