Каков размер выборки статистики по умолчанию в SQL Server?


11

Из MSDN :

Если ни один из вариантов выборки (SAMPLE, FULLSCAN, RESAMPLE)не указан, оптимизатор запросов производит выборку данных и вычисляет размер выборки по умолчанию.

Как определить размер выборки статистики по умолчанию?

Я прошел MSDN, но не нашел никакой формулы или метода, чтобы определить размер выборки по умолчанию. Везде присутствуют только формулы для автоматического обновления статистики. Любые указатели будут полезны.

Ответы:


20

Как определить размер выборки статистики по умолчанию?

Я хотел бы процитировать из статьи Blogs.msdn

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

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

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

1) Если таблица <8 МБ, тогда она обновляет статистику с полным сканированием.

2) Если таблица> 8 МБ, она следует алгоритму. Это уменьшает частоту выборки, так как количество строк в таблице увеличивается, чтобы мы не сканировали слишком много данных. Это не фиксированное значение, но находится под контролем оптимизатора. Это также не линейный алгоритм.

Пример: если у нас есть 1 000 000 строк, он будет использовать частоту дискретизации 30%, но когда число строк увеличится до 8 000 000, это уменьшит частоту выборки до 10%. Эти частоты дискретизации не находятся под контролем администраторов баз данных, но оптимизатор решает это.

Чтобы понять дальше, я предлагаю вам прочитать

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.