План выполнения ms sql
План выполнения ms sqlОтображение плана выполнения запроса
=== Скачать файл ===
Я думаю многие из Вас сталкивались с необходимостью оптимизации больших запросов, которые трудно поддаются рефакторингу. Иногда такие запросы бывают настолько объемны несколько тысяч строк кода и десятки запросов в пакете , что просто не знаешь с какой стороны к ним подступиться. Основной целью проекта являлась консолидация двух достаточно больших нетиповых баз ЗУП 2. Базы ЗУП до нас дорабатывались и сопровождались другими подрядчиками, а нас привлекли именно на консолидацию. Собственно с этого момента я подключился к этому вопросу. Часть I — Подготовительная: Если вкратце, то методика APDEX является широко распространенным международным стандартом оценки производительности информационных систем и является:. Сказать, что у нас дела были плохо — это значит не сказать ничего. Часть II — Неудачная, но длинная Естественно, что первым делам был сделан замер производительности средствами 1С. Он обрадовал и не обрадовал одновременно. Запросы на тысячу строк кода и десятками временных таблиц, собираемый по кусочкам из разных мест. К сожалению, мне попался именно такой запрос — соответственно, как я говорил выше, провести нормальный рефакторинг кода, учитывая полное отсутствие каких-либо комментариев со стороны разработчиков ЗУП, дело мягко говоря неблагодарное. Запускаем Microsoft SQL Profiler performance tools в Пуск. Как запустить SQL Profiler и подключиться к нужному серверу — выходит за рамки статьи — это более подробно описано в других местах sql. Запускаем новый trace со следующим набором событий Events см. Можно уменьшить выборку колонок, которые будут собираться, но для упрощения можно просто выделить все - пока не принципиально. Стартуем трейс перед началом заполнения и останавливаем после завершения. Дальше выгружаем его в таблицу для удобства работы. Для простоты можно выгрузить в tempdb с каким-нибудь простым именем, потом эту таблицу можно не задумываясь удалить. Находим длительные операции запросом. Видим две строчки с ОЧЕНЬ высоким Duration с ними и будем разбираться. В MS SQL Profiler находим по StartTime — EndTime все строчки расположены по возрастанию EndTime. Проанализируем вторую строчку, как наибольшую. Смотрим план запроса это строчка сразу НАД найденной строкой. Этим кстати и объясняются все танцы с бубном вокруг выгрузки трейса в таблицу, так как у планов выполнения запроса нет метрики Duration и найти план выполнения запроса без привязки к основному запросу крайне затруднительно. Смотрим таблицу tt38 в ней обнаруживается 2 миллиона строк см. Я думаю у многих возникает вопрос: Соответствие между объектами 1С и объектами СУБД можно получить при помощи метода ПолучитьСтруктуруХраненияБазыДанных , а дальше уже поиском находим нужный запрос необычные агрегатные функции максимум, среднее или количество различных структура запроса например: Разбираться надо с таблицей tt38 это кстати вторая строка по длительности в трейсе — insert into tt Аналогичным образом находим ПВЗ для таблицы tt38 см. Проблема начинается в выделенном фрагменте именно с этого момента возникает 2 миллиона строк , на входе у нас приходит две таблицы на строк, которые объединяются. И действительно была обнаружена ошибка в соединении, которая выделена подчеркиванием в конце запроса. ПоДолжности ТОГДА Истина ИНАЧЕ Ложь КОНЕЦ,. ПоПодразделению ТОГДА Истина ИНАЧЕ Ложь КОНЕЦ,. Как обычно получили две новости — хорошую и плохую. Во-первых, ошибку все равно нашли, а во-вторых, еще больше сузили область поиска проблемного запроса. Теперь стало понятно, что ошибка кроется в большом количестве записей на входе в таблицу ЗначенияПоказателей. Часть III — Удачная и короткая: Индивидуальный ПоПодразделению ПоПодразделениюИСотруднику Если не один из указанных, то ИСТИНА то есть без ограничений , то есть если вид показателя не равен ни одному из указанных, то фактически появляется соединение по ИСТИНА, что равно перемножению таблиц. Излишне говорить, что именно это и происходило. Время выполнения текущего запроса снизилось с 2 секунд до 0. IV часть — Заключительная и опять короткая: Результаты оптимизации стали видны сразу:. Анализ планов выполнения запроса так же помогает выявить запросы, которые сами по себе выполняются достаточно быстро по отношению к общему времени выполнения запроса, но которые критическим образом сказываются на общем времени выполнения. Такие 'некорректные' запросы очень тяжело выявить используя только стандартные средства 1С без визуализации плана выполнения. Когда у тебя руки чешутся, чтобы сделать что-нибудь полезное — проверь не сделал ли это кто-нибудь до тебя с Здесь я имею ввиду — Консоль запросов 1С с одновременной возможностью просмотра плана выполнения запроса из SQL Profiler. Пока, к сожалению, воспользоваться ей не довелось, но судя по отзывам и рекомендациям — там все нормально, и она отработает так как надо. Так что думаю обработка из разряда - must have. На производительности могут сказываться неочевидные и труднонаходимые ошибки в коде. У Вас не активирована подписка на рассылку! Проверьте Ваш e-mail и активируйте подписку. Люди которым это нравится. История оптимизации одного большого запроса средствами MSSQL Profiler и 1С. Инфостарт Все статьи источника. Цены Нативная реклама Связаться.
Нифедипин рлс инструкция по применению
Сшить юбку четверть солнца 1 швом