Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему тормозит запрос. Сравнение планов.  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
Microsoft SQL Server
2012 (SP1) - 11.0.3000.0 (X64)

Приветствую.
Анализирую почему начал тормозить наш SQL. Проверял разъезд actual и estimated метрик в плане, для чего запустил запрос с теми же параметрами, и посмотрел план. Удивило меня очень, а почему "старый" план плохо работал, ведь операторы в планах одинаковые. Ну подумал SQL что у него больше 1000 записей в Nested Loop прилетит, а прилетела одна, с чего тогда тормозить-то?
В приложении "хороший" план.

ЗЫ: 1C апликуха.

К сообщению приложен файл (A.SQLPlan - 104Kb) cкачать
29 апр 14, 19:10    [15954588]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
"плохой" план (звучит забавно).

К сообщению приложен файл (B.SQLPlan - 99Kb) cкачать
29 апр 14, 19:11    [15954591]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
ZOOKABAKODER,

WithUnorderedPrefetch на 2-х Nested Loops в плохом плане. С того и тормозит.
1 май 14, 00:06    [15961088]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
Mind
ZOOKABAKODER,
WithUnorderedPrefetch на 2-х Nested Loops в плохом плане. С того и тормозит.

Почитал про это, и так понял что это не тормозилка а ускорялка. Или ты хочешь сказать, что SQL ожидая большое количество записей в запросе, начинает read-ahead'ить очень много лишних данных и тратит на это время, а в "хорошем" плане, личших чтений не делается.
30 май 14, 10:10    [16095618]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
хмхмхм
Guest
ZOOKABAKODER,

Вы предоставили Estimated (оценочный) plan, а хорошо бы посмотреть на Executed Actual Plan (план выполнения).
30 май 14, 10:16    [16095652]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
ZOOKABAKODER
Microsoft SQL Server
2012 (SP1) - 11.0.3000.0 (X64)

Ну подумал SQL что у него больше 1000 записей в Nested Loop прилетит, а прилетела одна, с чего тогда тормозить-то?
В приложении "хороший" план.

ЗЫ: 1C апликуха.

Покажите 1Совский запрос.
30 май 14, 11:13    [16096045]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
Во втором запросе львиная доля трудозатрат возникает при формировании выборки, потом она сильно сокращается операцией Filter (отбрасываются строки с нулевым значением ресурсов).

Вообще в sql запросах, сгенерированных при обращении к таблицам регистров бухгалтерии муторно разбираться - покажите исходный текст запроса.
30 май 14, 11:32    [16096184]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
erp20
Во втором запросе львиная доля трудозатрат возникает при формировании выборки
Во втором запросе вообще ничего не возникает, ибо его нет - план показан оценочный.
erp20
потом она сильно сокращается операцией Filter (отбрасываются строки с нулевым значением ресурсов).
Это вы так расшифровали "Filter Cost: 0%"?
30 май 14, 11:40    [16096249]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
ZOOKABAKODER
Ну подумал SQL что у него больше 1000 записей в Nested Loop прилетит, а прилетела одна, с чего тогда тормозить-то?

В предварительном плане показано не то, что "прилитело". А то, что оптимизатор думает/считает, что прилетит
А приложению просто повезло, что для его конкретных переменных оценка оптимизатора совпала с действительностью
30 май 14, 11:57    [16096393]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
Glory
ZOOKABAKODER
Ну подумал SQL что у него больше 1000 записей в Nested Loop прилетит, а прилетела одна, с чего тогда тормозить-то?

В предварительном плане показано не то, что "прилитело". А то, что оптимизатор думает/считает, что прилетит
А приложению просто повезло, что для его конкретных переменных оценка оптимизатора совпала с действительностью

Glory опять забыл принять таблетки...
30 май 14, 12:09    [16096497]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
ZOOKABAKODER
Glory опять забыл принять таблетки...

Вот и посиди в бане
30 май 14, 12:11    [16096514]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
invm
erp20
Во втором запросе львиная доля трудозатрат возникает при формировании выборки
Во втором запросе вообще ничего не возникает, ибо его нет - план показан оценочный.
[/quot]
Если статистика актуальна, фактический план будет очень сильно отличаться от оценочного?

invm
erp20
потом она сильно сокращается операцией Filter (отбрасываются строки с нулевым значением ресурсов).
Это вы так расшифровали "Filter Cost: 0%"?

Я так расшифровал предикат этой операции. Дублирую:

CASE WHEN CONVERT(numeric(27,8),[Expr1019],0) IS NULL THEN (0.00000000) ELSE CONVERT(numeric(27,8),[Expr1019],0) END>CONVERT_IMPLICIT(numeric(27,8),[@P1],0) AND (CASE WHEN CONVERT(numeric(27,8),[Expr1019],0) IS NULL THEN (0.00000000) ELSE CONVERT(numeric(27,8),[Expr1019],0) END<>CONVERT_IMPLICIT(numeric(27,8),[@P1],0) OR CASE WHEN CONVERT(numeric(27,8),[Expr1020],0) IS NULL THEN (0.00000000) ELSE CONVERT(numeric(27,8),[Expr1020],0) END<>CONVERT_IMPLICIT(numeric(27,8),[@P1],0))

Ошибся в расшифровке?
30 май 14, 12:13    [16096527]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
BTW

+
А если кто-то продолжит "прения", то получит постоянный бан
30 май 14, 12:30    [16096647]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
[quot Glory, выплюнь озверин. :)]Планы вышли одинаковые, но это оказалось не так.[quot]
Поясните пожалуйста это предложение.

На мой взгляд основные трудозатраты связаны с извлечением информации, при этом большая ее часть потом убирается фильтрацией. Нужно сокращать первичную выборку (от лишней информации). Вы ведь используете информацию из "виртуальной таблицы" оборотов регистра бухгалтерии? Вообще, покажите 1сный запрос или это секрет?
30 май 14, 12:31    [16096658]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
erp20
Если статистика актуальна, фактический план будет очень сильно отличаться от оценочного?
В части реальных количеств строк может даже очень отличаться, несмотря на актуальность статистики.
erp20
Я так расшифровал предикат этой операции
Где там "нулевое значение ресурсов"?
30 май 14, 12:47    [16096777]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
invm
erp20
Я так расшифровал предикат этой операции
Где там "нулевое значение ресурсов"?

Ресурсы полученные из виртуальной таблицы оборотов (скорее всего) регистра бухгалтерии:

Expr1019
Expr1020

Фильтром отсекаются строки у которых значение ресурсов не подходят под условие: Expr1019 > 0 и Expr1020 <> 0

ps. Ресурс тип колонки виртуальной таблицы в терминологии 1с
30 май 14, 12:58    [16096881]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
erp20
Member

Откуда: Москва
Сообщений: 48
invm
erp20
Если статистика актуальна, фактический план будет очень сильно отличаться от оценочного?
В части реальных количеств строк может даже очень отличаться, несмотря на актуальность статистики.
А может отличаться незначительно. Такие ситуации вам не встречались?
30 май 14, 13:00    [16096891]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
invm
Member

Откуда: Москва
Сообщений: 9824
erp20
Ресурсы полученные из виртуальной таблицы оборотов (скорее всего) регистра бухгалтерии
Тут форум по MS SQL Server. Никто не обязан владеть терминологией 1С, даже если обсуждаемый запрос порожден ей.
erp20
А может отличаться незначительно.
Может и незначительно. Но из этого не следует применимость оценочного плана для анализа конкретной ситуации.
30 май 14, 13:15    [16097044]     Ответить | Цитировать Сообщить модератору
 Re: Почему тормозит запрос. Сравнение планов.  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
sp_updatestatistics прогоните -- может поможет
30 май 14, 13:31    [16097197]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить