Коли оновлювати статистику?


42

Я успадкував Плани технічного обслуговування, який виконує такі дії:

  • Очищення старих даних
  • Перевіряє цілісність БД
  • Виконує резервні копії баз даних та журналів транзакцій
  • Реорганізовує наші індекси
  • Оновлення статистики
  • Видаліть старі резервні копії та файли плану технічного обслуговування

З 23-хвилинного плану технічного обслуговування оновлення статистики займає приголомшливі 13 хвилин. Протягом цього 13-хвилинного періоду доступ до бази даних блокується (або, принаймні, реплікація з цього БД до інших наших призупиняється).

Моє запитання:

Коли нам слід оновлювати статистику, і чому?

Це схоже на те, що ми повинні робити рідше, ніж щодня. Я намагаюся вивести нас із "просто тому, що" розумовий настрій робити непотрібне обслуговування.


2
Як часто / як будь-які рядки вставляються / оновлюються / видаляються? Для мене це вирішальний фактор.
JNK

@JNK Ми вставляємо ~ 70 000 рядків на день у всій БД. Оновлення ~ 100 рядків на місяць.
Лук-лицар

1 - Це більш актуально, якщо за таблицею ми знаємо, скільки рядків, а 2 - як відсоток. 70k рядків на день в 1m таблиці набагато відрізняється, ніж у 500m таблиці
JNK

Я рекомендую використовувати таку річ, як ola.hallengren.com/… це рішення лише відновлює / реорганізовує та оновлює те, що потрібно таким чином, ви можете скоротити час, який займає ваш план першочергового обслуговування, а також заощадити багато місця в журналі.
Петро

Відповіді:


28

Якщо у вас немає вікна технічного обслуговування, оновлення статистики щодня, ймовірно, є надлишковою. Особливо, якщо для бази даних увімкнено статистику автоматичного оновлення . У своєму первісному дописі ви сказали, що користувачі бачать зниження продуктивності завдяки цьому плану технічного обслуговування. Чи немає іншого часу для виконання цього плану обслуговування? Немає іншого вікна? Я бачу, що ваш план включає реорганізацію індексу, коли ви перебудовуєте індекси? Коли ця операція відбувається, статистика автоматично оновлюється (за умови, що не вимкнено для індексу).

Від того, наскільки часто вам слід оновлювати статистику, дуже залежить те, наскільки модифікація даних отримує ваші індекси та дані . Якщо є дуже мало модифікації ( INSERT, UPDATE, DELETE) до даних, то ви могли б мати більш рідкісний графік роботу поновлення статистики.

Один із способів з’ясувати, чи є ваша статистика неоднорідною, - це переглянути плани виконання, і якщо ви оцінили рядки сильно відрізняються від фактичних повернутих рядків, то це хороший показник того, що інтервал потрібно збільшувати. У вашому випадку ви йдете іншим шляхом, і для вас може бути трохи випробування. Оновіть статистику щотижня, і якщо ви починаєте бачити показові знаки несвіжої статистики, тоді перейдіть звідти.

Якщо ви використовуєте статистику автоматичного оновлення для своєї бази даних, дивіться це посилання на поріг, коли оновлюється статистика.


Ми відновлюємо індекси раз на тиждень.
Лук-лицар

5
@ Onion-Knight Потім ви також оновлюєте статистику раз на тиждень, коли ви збираєте свої індекси. Цього може бути достатньо, якщо ви здійснюєте перебудову індексу ковдри в базі даних.
Томас Стрінгер

25

Коли оновлювати статистику?

якщо і лише якщо функція автоматичного оновлення статистики недостатньо підходить для ваших вимог. Я маю на увазі, якщо автоматичне створення та автоматичне оновлення статистики ВКЛЮЧЕНО, і ви отримуєте поганий план запитів, оскільки статистика не точна або поточна, то може бути хорошою ідеєю мати контроль над створенням та оновленням статистики. але якщо ви добре з роботою вашого сервера sql та часом виконання запитів.

то я пропоную зупинити команду « Статистика статистики оновлень» у ваших планах технічного обслуговування

оновлення статистики є важливим і корисним 1. дозволяє оптимізатору запитів SQL Server послідовно створювати хороші плани запитів, при цьому утримуючи низькі витрати на розробку та адміністрування. 2. Статистика використовується оптимізатором запитів для оцінки вибірковості виразів, а отже, розміру проміжних і кінцеві результати запиту. 3. Хороша статистика дозволяє оптимізатору точно оцінити вартість різних планів запитів, а потім вибрати високоякісний план


Якщо ви хочете зробити оновлення статистики вручну, ви повинні спочатку знати, коли статистика оновлюється автоматично

Якщо оптимізатору запитів SQL Server потрібна статистика для певного стовпця таблиці, який зазнав значної активності оновлення з моменту останнього створення статистики або оновлення статистики, SQL Server автоматично оновлює статистику шляхом вибірки значень стовпців (використовуючи статистику автоматичного оновлення) . Автоматичне оновлення статистики запускається оптимізацією запитів або виконанням складеного плану, і воно включає лише підмножину стовпців, про які йдеться в запиті. Статистика оновлюється перед складанням запитів, якщо AUTO_UPDATE_STATISTCS_ASYNC вимкнено

ось приємні статті, в яких йдеться про те, коли статистика оновлення запускається на SQL сервері

  1. з простого розмови Розділ 13. Коли спрацьовує автоматичне оновлення до статистики?
  2. support.microsoft Розділ: Автоматизація визначення автоматичних параметрів
  3. розділ msdn.microsoft : Ведення статистики в SQL Server 2008

після того, як дізнаєтесь, коли запускається статистика, це допоможе вам вирішити, коли оновлювати статистику вручну

щоб дізнатися більше про статистику та її вплив на продуктивність, я рекомендую BrentOzar та Kimberly у sqlskills дуже хороших блогів та блогерів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.