2015-12-17 3 views
0

Я прочитал несколько статей и понял, что реорганизация на основе BOL не обновляет статистику, поскольку распределение данных не изменяется. Раньше мы делали перестраивание индекса каждую ночь, пока он не был слишком медленным, и он перемещался, чтобы иногда индексировать перестройку, а иногда и индексировать реорганизацию (которую я назвал интеллектуальной переиндексацией). внезапно, через 6 месяцев после изменения, я получаю звонок, говоря, что что-то не так с вашим запросом ... После многих часов анализа я наконец понял, что проблема связана с устаревшей статистикой. Никогда раньше эта проблема не возникала, поскольку перестроение индексов эквивалентно обновлению Stats Updates With Fullscan.Изменяет ли индекс индекса?

Моя теория и исправьте меня, если я ошибаюсь, заключается в том, что если вы выполняете умные переиндексации (основываясь на лучших методах = перестроить, когда> 30% фрагментации и реорганизации, когда от 5 до 30% обрезания) на ночной основе, это может перестроить индексы в первый раз или около того, а затем Реорг навсегда, так как ночной процесс поймает его у Реорга и никогда не будет иметь шансов на восстановление .... что в последствии никогда не будет обновлять статистику?

Так что если у меня есть таблица с 10 миллионами строк, мне придется подождать, пока не будет изменено 2 миллиона строк до того, как будет обновлена ​​статистика обновлений, и индекс никогда не будет перестроен?!?!?

Правильно ли я?

ответ

0

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

В «патологическом» случае только одна страница неуместна для реорганизации для перемещения. Чтения одной страницы недостаточно для получения точной гистограммы, поэтому SQL не дает вам бесплатное обновление статистики.

Контрастность с восстановлением. Поскольку он должен читать (и писать) каждую страницу, разработчики SQL сказали: «О, эй ... может быть, так что бесплатное обновление статистики!».

И, наконец, вам не нужно полагаться на механизм автоматического обновления, чтобы выполнить удар; вы можете ввести инструкцию update statistics. Пока я здесь, я могу одобрить бесплатные сценарии, написанные Старым Hallengren. Процедура обслуживания индекса, которая поставляется вместе с ней, также будет поддерживать статистику. Мне очень повезло с этим.

+0

После того, что я испытал за последние несколько часов, я обязательно рассмотрю сценарий обслуживания для обновления статистики. Но я обсуждаю, если я должен делать это по времени (раз в месяц) или в той же самой процедуре обслуживания повторного индексирования каждый раз, когда выполняется Reorg. – JohnG

+0

Ненавижу вытаскивать старый ответ DBA, «это зависит», но это действительно так. В частности, о том, влияет ли статистика «плохо» на качество запросов для вас и может ли обновление статистики значительно изменить гистограмму. Я уверен, что есть другие факторы, о которых я не думаю (что такое красота сайта сообщества, как это, я уверен, что другие добавят к разговору). –

Смежные вопросы