
У меня есть ночной 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 в покое.
Спасибо