Обновление статистики на самом деле снижает производительность?

Обновление статистики на самом деле снижает производительность?

У меня есть ночной sp_updatestats в рабочей базе данных, который, похоже, работает нормально, за исключением одной конкретной хранимой процедуры, у которой возникают проблемы с производительностью после обновления.

В настоящее время команда разработчиков работает над исправлением процедуры (некоторые новые индексы и некоторая реорганизация запроса, которые я рекомендовал), но на данный момент единственным решением является выполнение

UPDATE STATISTICS [SuperGiantTable]
WITH FULLSCAN

Итак, вопрос в том, могу ли я заставить sp_ updatestats выполнить опцию «с полным сканированием»? Могу ли яхотетьЕсли нет, то я, вероятно, просто добавлю эту команду UPDATE STATISTICS выше, чтобы она запускалась сразу после sp_updatestats.

SQL 2000, кстати.

решение1

Как сказал KPWINC: «Это действительно зависит от обстоятельств».

Есть еще несколько моментов, которые влияют на ответ на ваш вопрос, поэтому общий ответ может быть неуместным.

В Microsoft MSDN есть записи для sp_updatestats (http://msdn.microsoft.com/en-us/library/aa260337(SQL.80).aspx) и "ОБНОВЛЕНИЕ СТАТИСТИКИ" (http://msdn.microsoft.com/en-us/library/aa260645(SQL.80).aspx)

Сначала отвечу на ваши последние вопросы:

Вам нужно перечитать запись SQLServerPedia. А именно:

Перестроение индекса автоматически обновит статистику для индекса (со 100% размером выборки, что обычно лучше, чем то, что вы получаете при использовании sp_updatestats).После завершения перестройки индекса вы можете использовать sp_updatestats для обновления других статистических данных, требующих внимания. (2005+).

В документации UPDATE STATISTICS (2000) говорится следующее относительно выборки:

Примечание. По умолчанию выполняется выборочное сканирование целевой таблицы или индексированного представления.SQL Server автоматически вычисляет требуемый размер выборки.

Кимберли Трипп собрала несколько записей в блоге по статистике, индексам и планам обслуживания баз данных (http://www.sqlskills.com/BLOGS/KIMBERLY/category/Statistics.aspx). Хотя информация может быть или не быть использована вами напрямую, руководство к каждой записи в блоге должно быть полезным, а упомянутые сайты, вероятно, будут полезны.

решение2

Это действительно зависит...

Сколько баз данных?

Насколько велика база данных?

Насколько высока активность?

sp_updatestats (по умолчанию) обновляет статистику с частотой выборки по умолчанию. Вы можете попробовать использовать опцию resample, но это сработает только в том случае, если автоматическое обновление не происходило с момента последнего обновления статистики (автоматическое обновление также использует частоту выборки по умолчанию).

При перестроении индекса статистика обновляется с помощью полного сканирования, и большинство людей видят хорошую производительность после перестроения индекса.

Только в редких случаях люди отключают функции автоматической статистики. Я бы рекомендовал оставить ее ВКЛЮЧЕННОЙ.

Создайте задание, которое выполняется с соответствующим интервалом (который зависит от шаблонов изменения данных для каждой таблицы) и выполняет ручное обновление статистики с использованием полного сканирования или какой-либо другой высокой частоты выборки.

В общем, я бы поступил следующим образом:

Если база данных большая — резервное копирование журнала транзакций каждый час.

-- Ежедневное дифференциальное резервное копирование. -- Ежедневная дефрагментация. -- Ежедневное обновление статистики.

-- Переиндексация раз в неделю. -- Полное резервное копирование раз в неделю.

Многое зависит от базы данных и транзакций.

решение3

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

Знаете ли вы разницу в планах запросов между sproc после выборочного обновления статистики и обновления статистики полного сканирования?

Еще одно — будьте осторожны с планами обслуживания, которые перестраивают индексы, а затем обновляют ту же самую статистику, которая была обновлена ​​в качестве побочного эффекта перестройки — вы можете получитьХУДШИЙстатистика тогда, если бы вы просто оставили rebuild-updated-stats в покое.

Спасибо

Связанный контент