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

Откуда:
Сообщений: 15
Почему при добавлении большого количества данных случается беда с генерацией оптимальных планов, и как с этим бороться?

Ну то есть ответ мне отчасти известен - новые данные => старая статистика => неоптимальные планы, не понятно, как правильно решить проблему. Ситуация следующая: из-за случаев генерации неоптимальных планов (цилкы по 5000 раз вместо 5 ожидаемых, умирающие запросы, все как положено), апдейт статистики был переделан с автоматического на ручной, раз в день:
exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN, INDEX, NORECOMPUTE; UPDATE STATISTICS ? WITH COLUMNS, NORECOMPUTE;'
Почти сразу выяснилось, что объемные процедуры по вставке и обновлению данных либо работают быстрее чем раньше (ну статистика при инсертах не апдейтится... или взаправду планы оптимальнее стали) либо умирают на пару часов. Возможные решения - более частый апдейт с использованием
exec sp_updatestats N'resample'
, костыли в виде ручного обновления перед процедурами или временного включения автоапдейта.
Но если предположить, что данные в таблицах однородные, то поведение такое непонятно - старая статистика будет если не актуальной, то очень похожей на новую (хотя сравнивать не пытался из-за большого кол-ва таблиц и процедур). Короче, объясните плз причину устаревания статистики на относительно однородных данных?

Научите меня жить, господа гуру)

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)
12 сен 11, 11:07    [11262625]     Ответить | Цитировать Сообщить модератору
 Re: UPDATE STATISTICS и вставки большого количества данных  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Zakonnic,

статистика при инсертах так и так не апдейтится.
насчет однородности данных, я не понял, а что значит однородные, ведь сами данные у вас добавляются? допустим согласно статистике было по 10 строк, в каждом из диапазонов гистрограммы статистики, выгодно было использовать поиск по индексу, потом добавилось много данных, но с таким же распределением и стало по 1000 строк в каждом диапазоне, теперь уже выгодно использовать сканирвоание. А если данные еще и не так пропорционально добавляются...вобщем однородность, имхо весьма условное понятие.
В любом случае, если вы считаете, что у вас добавление данных сильно не меняет распределение, отключите автообновление статистики и все должно быть ок, ведь раз данные такие же, то и планы по сути должны подходить "старые". Если же планы "протухают", то значит все-таки распередение данных меняется раз планы становятся неоптимильными, тогда и надо обновлять статистику.
12 сен 11, 11:45    [11262857]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить