План выполнения ms sql

План выполнения 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С. Инфостарт Все статьи источника. Цены Нативная реклама Связаться.

Наборщик текстов брянск

Target not found перевод

Сколько сезонов мажора вышло

Сколько до брянска на поезде

Нифедипин рлс инструкция по применению

Сшить юбку четверть солнца 1 швом

Как лечить шпору желчью

Сколько раз в день пить аскорбиновую кислоту

Верлен стихи в переводе пастернака

Report Page