ТИМУР ШАМИЛАДЗЕ, руководитель, ООО «БухКонсалтинг», timurshamiladze@yandex.ru
Использование SQL Profiler для поиска и исправления медленных запросов в 1С
Одной из основных причин медленной работы 1С являются неоптимальные запросы. С помощью инструмента SQL Profiler можно находить медленные запросы и способы ихисправления
Если в системе существуют проблемы с производительностью, то рекомендуется начинать именно с анализа запросов, а не ожиданий на блокировках или взаимоблокировках, т.к. часто после исправления плохо работающих запросов могут исчезнуть некоторые избыточные блокировки и взаимоблокировки.
Понятие плана запроса
Чтобы приступить к поиску и исправлению медленных запросов, нам необходимо ввести такое понятие, как план запроса.
В процессе своего выполнения запрос, написанный на языке 1С, претерпевает следующие изменения:
- Сначала запрос попадает на сервер 1С, где происходит подмена в запросе имен метаданных конфигуратора 1С на таблицы и поля терминологии СУБД, т.е. запрос заменяется на запрос SQL.
- Затем сервер 1С посылает этот измененный запрос в СУБД, где он преобразуется в план. План запроса – это последовательность действий, которую необходимо выполнить, чтобы получить результат запроса.
Построение плана запроса необходимо, т.к. один и тот же запрос можно получить разными способами:
- сканировать таблицу или искать по индексу,
- выбору способа соединения таблиц и т.д.
Построение плана запроса в SQL Server занимается так называемый оптимизатор СУБД, который исходя из пришедшего текста запроса, статистики, существующих индексов иограниченного времени (СУБД не может много времени тратить на выбор плана запроса) строит самый оптимальный план запроса, который сможет быстрее всего выполниться и снаименьшими затратами ресурсов.
План запроса можно сравнить с таксистом:
- Мы ловим такси и говорим, куда нам нужно ехать, – это был наш запрос.
- Дальше таксист начинает в голове строить маршрут, по которому он поедет, чтобы быстрее добраться до места назначения, – это работа оптимизатора СУБД, а выбранный маршрут является планом запроса.
- При движении по выбранному маршруту таксист неожиданно оказывается в пробке и вместо того, чтобы быстро добраться до места, целый час в ней простоял – это ошибка оптимизатора СУБД, который построил неоптимальный план запроса (например, статистика была неактуальная).
Поэтому медленно работающий запрос – это медленно работающий план запроса.
Статью целиком читайте в журнале «Системный администратор», №06 за 2016 г. на страницах 38-43.
PDF-версию данного номера можно приобрести в нашем магазине.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|