Назад | Перейти на главную страницу

Необходимо ли вручную обновлять статистику при включении автоматического создания / обновления статистики для базы данных SQL Server?

Нужно ли вручную ОБНОВЛЕНИЕ СТАТИСТИКИ для базы данных SQL Server регулярно (например, ежедневно), когда AUTO_CREATE_STATISTICS и AUTO_UPDATE_STATISTICS варианты НА?

Да, вам нужно обновлять статистику вручную, особенно когда ваша база данных становится больше.

Логика статистики auto_update срабатывает только после того, как таблица вырастет на 20% по сравнению с тем, что было при последнем обновлении статистики. В больших таблицах это могут быть сотни миллионов записей. В этих случаях статистика станет устаревшей до того, как сработает логика автоматического обновления, поэтому вам придется обновить ее вручную.

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

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

Blogger BenchmarkIT проверил "правило 20%" в его пост здесь.

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

Его ранее сообщение в блоге здесь смотрит, что происходит, когда вы переиндексируете свою базу данных. Он показывает, что при восстановлении индекса статистика обновляется. для этого индекса, но любая «автономная» статистика, не связанная с индексом, не обновляется.

Оба они добавляют дополнительную поддержку аргументу «Да, вам нужно вручную обновить статистику».