3

これと似たような質問が他にもありますが、混同しないでください。

STATS_DATE()統計がどこで更新されたかを知る機能があることは知っていますが、これは問題ありませんが、知りたいのは、この統計の更新またはカットオフをトリガーするものです。これについても報告があることを知っています。

しかし先週、特定のサーバーの統計を見たところ、この特定のデータベースのメイン テーブルについて 4 桁という非常に優れた情報が得られました。

現在、同じ実稼働サーバーを調べており、STATS_UPDATE先週の土曜日に更新された関数が返されましたが、このサーバーは、サービスの再起動さえも再起動せずに数週間稼働しています。だから私は、基本的に今週月曜日の朝に蓄積された統計を見ていることを知っています.

したがって、この設定をどこで設定できるかを知りたいので、サーバーは、ログまたはサーバーが使用するストレージをクリアするまで、インデックスの使用統計を蓄積し続けます。

4

1 に答える 1

2

SQL サーバーがテーブルとインデックスに対して保持するさまざまな「統計」があります。

  1. ヒストグラム統計。これらは、クエリ オプティマイザーが使用する統計です。STATS_DATE() は、これらが最後に更新された日時を返します。ヒストグラム統計の自動更新の基準は、500 行 + テーブルの 20% です。したがって、100,000 行のテーブルでは、これらの再計算をトリガーする前に 20,500 行を更新する必要があります。自動統計更新のしきい値を変更することはできませんが、自動統計更新をオフにしたり、特定のテーブルやインデックスの統計を手動で更新したりできます。

  2. 使用統計: これらは sys.dm_db_index_usage_stats にあります。インデックス使用統計は、SELECT クエリからのシークやスキャンなどを追跡します。それらは永続化されず、SQL サーバーの再起動時にリセットされます。これらの統計は、基になるインデックスが "ALTER INDEX ... REBUILD" で再構築された場合にもリセットされますが、"ALTER INDEX ... REORG" ではリセットされません。

  3. 運用統計: これらは sys.dm_db_index_operational_stats にあります。運用統計とは、ページ分割、リーフ レベルの挿入、PAGEIOLATCH 遅延などです。これらも永続的ではありません。

于 2012-12-04T03:47:30.900 に答える