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

Откуда:
Сообщений: 1134
Недавно на проекте столкнулся с 6 секундным временем формирования плана. Очевидно попал в ту ветку алгоритма оптимизатора в которой он входил во вложенные циклы и проверял в цикле комбинации вариантов(с расчетом статистики). В запросе было порядка 120-и таблиц.

Интересно у кого нибудь возникали подобные ситуации, насколько это актуально?

p.s. разумеется после кеширования он заново не расчитывался, время не тратилось.он был параметризуемым. проблема что он формировался динамически и было много достаточно вариций - поэтому оставить его без внимания было нельзя.
31 авг 12, 20:58    [13097585]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Просто думаю, стоит ли его разобрать на кусочки? Пример не очень показательный потому как продакшн система. Поэтому будет достаточно трудозатратно обезличить таблицы и данные,понять какая комбинация условий является ключевой. Да и очевидно при меньших объемах данных будут другие показатели потому как основное время уходит на расчет статистики в комбинациях вариантов. (вообщем создать показательный вариант в виде скрипта будет совсем не просто)
31 авг 12, 21:03    [13097601]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
step_ks
Member

Откуда:
Сообщений: 936
2008 R2 SP1.
Вот не далее, как сегодня один из стейтментов в ХП начал рекомпилиться больше минуты по причине Statistics changed на очень часто изменямой таблице (insert/delete). А чуть позже сервер ушел на этом месте вообще в бесконечную череду StmtStarting, StmtRecompile - за целый час так и не приступил к выполнению запроса, дальше ждать не стали.
31 авг 12, 21:30    [13097678]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Давным давно сталкивался на оракле с ситуацией когда план формировался вообще минуты. Правда там была ситуация когда СУБД дали решать по сути не ее задачу из области комбинаторики(динамический запрос с кучей логических условий и объединений).
В MSSQL с ограничением(хотя и бывшим) в 256 таблиц в запросе до этого особо не сталкивался. Хотя конечно понимаю что комбинаций можно насоздавать со вложенными запросами бесконечное количество случаев и на 256-и таблицах. Но вот на практике в реальных запросах как то раньше не было.
31 авг 12, 21:52    [13097758]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
случай на проэкте
Guest
МуМу
В запросе было порядка 120-и таблиц.

вы все делаете правильно. а сервер - тупой. не судите его разработчиков строго.
31 авг 12, 22:20    [13097864]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33958
Блог
120 таблиц в запросе... что-то нужно менять)
31 авг 12, 22:34    [13097906]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
МуМу
6 секундным временем формирования плана
Бывает и хуже.
МуМу
В запросе было порядка 120-и таблиц
Таблиц или соединений?
Если таблиц то это хамба. Хотя и для соединений не подарочек.
МуМу
позже сервер ушел на этом месте вообще в бесконечную череду StmtStarting, StmtRecompile - за целый час так и не приступил к выполнению запроса
Есть даже "баг", что можно даже на простом запросе вбить сервер в ступор. Даже фиксы были. Сам не встречал. Слышал звон ...
МуМу
Statistics changed на очень часто изменямой таблице
Это только повод, причина в системе.
На стадии наработки можно конечно и опции прописать, пока не устаканится, но обычно это (мало данных) не приводит к плохой производительности.
Обычно через некоторое время всплывают все ужасы разработчиков.
МуМу
Просто думаю, стоит ли его разобрать на кусочки?
Это не лечение, это костыль.
Лечение - это пересмотр системы и судя по всему свеже спроектированной.

Копать в организацию процессов. Что означает каждый из кусков запроса и зачем он там нужен.
В плане не должна фигурировать ни одна таблица которая не предоставляет ценности для результата данных, и никаких которые должны нарабатываться на предыдущих этапах процесса.

Плохо что на стадии проектирования возникают проблемы. Ибо во время допиливания и выяснения некоторых "неважных" деталей возникает проблем не меньше.

Гипотетически возможно что все эти таблы нужны именно здесь, и максимально уже всё распределено (хотя в это не верится).
Тогда ошибка в подходе написания системы, мировозрении. Очень Невероятно ценный опыт разобраться в этом.

PS: Костыль конечно придётся написать, но на этом нельзя забивать.
31 авг 12, 22:55    [13097986]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
МуМу
В запросе было порядка 120-и таблиц.
Покажите план. Я его распечатаю и на стенку повешу Картинка с другого сайта.

При 120 таблицах велика вероятность что сервер вообще может не найти оптимальный план.
1 сен 12, 02:07    [13098727]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
МуМу
Member

Откуда:
Сообщений: 1134
Интерес исключительно академический. Запрос уже давно оптимизирован. Систему проектировал не я, поэтому что тут сказать...
1 сен 12, 07:13    [13098792]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
У меня по 6 минут формировался план. Угадайте с трех раз, почему. ;)
1 сен 12, 11:29    [13098998]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Гавриленко Сергей Алексеевич
У меня по 6 минут формировался план. Угадайте с трех раз, почему. ;)

протерял условие объединения - и оптимайзер не мог понять что ему делать с таким декартом? :)
1 сен 12, 12:59    [13099170]     Ответить | Цитировать Сообщить модератору
 Re: С каким максимальным временем формирования плана запроса кто нибудь сталкивался?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37067
locky
Гавриленко Сергей Алексеевич
У меня по 6 минут формировался план. Угадайте с трех раз, почему. ;)

протерял условие объединения - и оптимайзер не мог понять что ему делать с таким декартом? :)
Не. Стоял синхронный автокриэйт статистики и таблица в пару терабайт.
1 сен 12, 14:31    [13099357]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить