web-dev-qa-db-ja.com

SQL Serverの統計のデフォルトのサンプルサイズは何ですか?

[〜#〜] msdn [〜#〜] から:

サンプルオプション(SAMPLE, FULLSCAN, RESAMPLE)が指定されていない場合、クエリオプティマイザーはデータをサンプリングし、デフォルトでサンプルサイズを計算します。

統計のデフォルトのサンプルサイズを識別する方法は?

MSDNを調べましたが、既定のサンプルサイズを特定するための数式や方法が見つかりませんでした。どこにも、自動統計更新をトリガーするための数式しかありません。どんなポインタも役に立ちます。

11

統計のデフォルトのサンプルサイズを特定する方法

Blogs.msdn article から引用します

自動統計更新アルゴリズム:

したがって、自動更新統計は、テーブル行の500 + 20%の変更ごとに発生します。もちろん、SQL 2012ではSQRT(1000 *テーブル行)のアルゴリズムが改善されており、はるかに優れています。

起動すると、デフォルトのサンプリングレートが使用されます。サンプリングレートを計算するアルゴリズムは次のとおりです。

1)テーブルが8MB未満の場合、フルスキャンで統計を更新します。

2)テーブル> 8MBの場合、アルゴリズムに従います。テーブルの行数が増えると、サンプリングレートが低下し、スキャンするデータが多すぎないことを確認します。これは固定値ではありませんが、オプティマイザの制御下にあります。線形アルゴリズムでもありません。

例:1,000,000行の場合、30%のサンプリング率を使用しますが、行数が8,000,000に増加すると、サンプリング率が10%に減少します。これらのサンプリングレートはDBAの管理下にはありませんが、オプティマイザが決定します。

さらに理解するために私はあなたに読むことを勧めます

20
Shanky