Який розмір вибіркової статистики за замовчуванням у SQL Server?


12

Від MSDN :

Коли жоден із варіантів вибірки (SAMPLE, FULLSCAN, RESAMPLE)не вказаний, оптимізатор запитів відбирає дані та обчислює розмір вибірки за замовчуванням.

Як визначити розмір вибіркової статистики за замовчуванням?

Я пройшов MSDN, але не знайшов формули чи методу, щоб визначити розмір вибірки за замовчуванням. Всюди є лише формули, які викликають автоматичне оновлення статистики. Будь-які покажчики будуть корисні.

Відповіді:


20

Як визначити розмір вибіркової статистики за замовчуванням?

Я б процитував статтю Blogs.msdn

Алгоритм статистики автоматичного оновлення:

Таким чином, статистику автоматичного оновлення розпочнеться за кожну 500 + 20% зміну рядків таблиці. Звичайно, у нас вдосконалений алгоритм у SQL 2012, який є SQRT (1000 * рядків таблиці), що набагато краще.

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

1) Якщо таблиця <8MB, то вона оновлює статистику на повний скан.

2) Якщо таблиця> 8MB, це слід алгоритму. Це зменшує частоту вибірки, оскільки кількість рядків у таблиці збільшується, щоб переконатися, що ми не скануємо занадто багато даних. Це не фіксоване значення, але знаходиться під контролем оптимізатора. Це теж не лінійний алгоритм.

Приклад: якщо у нас є 1 000 000 рядків, він використовував би коефіцієнт вибірки 30%, але коли кількість рядків збільшиться до 8 000 000, це знизить частоту вибірки до 10%. Ці показники вибірки не знаходяться під контролем DBA, але оптимізатор вирішує це.

Щоб зрозуміти далі, пропоную прочитати

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