SQL Profiler для 1С

Ребята, всем привет! Сегодня будет небольшая заметка о том, как настроить ‘SQL Profiler’ для отладки запросов из 1с.

SQL Server Profiler – это программа, которая позволяет производить отладку (трассировку) процессов, которые происходят в базе данных. В большинстве случаев программисты 1с через данную утилиту отлаживают запросы в базе данных и оптимизируют их (но возможности утилиты намного больше). Сегодня мы и рассмотрим как настроить ‘SQL Profiler’ для выполнения данной операции.

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

SQL Profiler - создаем трассировку.
SQL Profiler – создаем трассировку.

После того как мы успешно подключились к нашему серверу, появится окно ‘Свойства трассировки’. Вот здесь то и происходят основные настройки. На первой закладке указываем имя нашей трассировки и затем переходим на вкладку ‘Выбор событий’:

Свойства трассировки.
Свойства трассировки.

Далее устанавливаем основные события, благодаря которым мы сможем отлаживать наши запросы:

Выбор событий трассировки для запросов.
Выбор событий трассировки для запросов.

К примеру событие ‘Showplan Statistics Profile’ – отвечает за текстовое представление запроса. А ‘Showplan Statistics Profile’ за графическое представление выполнения запроса.

Теперь мы должны понимать, что данная трассировка будет отлаживать все запросы к базам банным на выбранном сервере, а нам необходимо ограничиться только определенной базой. Для этого устанавливаем флаг ‘Показать все столбцы’ и ставим флажки в колонке ‘DatabaseID’ либо ‘DatabaseName’:

Показывать все столбцы.
Показывать все столбцы.

И теперь через фильтр столбцов мы можем установить отбор только для определенной базы данных, через её ‘ID’ либо ‘Имя’. Если с именем базы данных все понятно, то что бы узнать её идентификационный номер, достаточно выполнить для базы данных запрос ‘SELECT db_id()’:

Фильтры для базы данных.
Фильтры для базы данных.
‘SELECT db_id()’. Запрос для выделенной базы данных.

После того как мы все настроили – запускаем нашу трассировку. И сразу же её останавливаем, дабы не поймать ненужных нам запросов.

Управление трассировкой.
Управление трассировкой.

Теперь давайте напишем в консоле запросов наш запрос. Включим трассировку и выполним этот запрос. После чего остановим трассировку.

Запрос для трассировки.
Запрос для трассировки.

В результате получим все необходимые данные по тем событиям, которые мы указали в трассировке:

Результат трассировки событий при выполнении запроса.
Результат трассировки событий при выполнении запроса.

Понятное дело, в нашем примере мы выполнили совсем простой запрос и результат оказался таким же: немного событий, просто план запроса, понятное текстовое представление. Давайте попробуем вытащить в данном запросе код организации договора (не забывайте очищать результаты предыдущей трассировки – ‘ластик’ в командной панели):

Запрос для трассировки 2.

Как видите план запроса стал немного сложнее, так как в запросе мы получаем данные еще и из другой таблицы ‘Организация’:

Соединение в SQL запросе.
Соединение в SQL запросе.

В данной заметке были рассмотрены настройки ‘SQL Profiler‘ и простой пример отладки запроса. Здесь нужно понимать как работать с планами запроса, индексами и т.к. далее, что бы грамотно их оптимизировать. Все придет с опытом. Думаю что я, продолжу писать заметки по работе с данной утилитой: будем разбирать планы запросов и примеры их оптимизации. Всем удачи и пока!

3+

Оставить комментарий

Ваш адрес email не будет опубликован.