0

私はしばらくの間、開発者としてSQLServerを使用しています。

私が学んだことの1つは、SQL Serverが統計を管理し、エンジンが最適化された実行プランを作成するのに役立つことです。

統計のストアが正確に何であるかを理解できませんでしたか?(私はそれを読んでVectorを保存しますが、どのVectorですか?)

SQL Serverが統計を更新するのはいつ/どのシナリオですか?

どのように/なぜ同期が外れるのか(古い統計)

古い統計の場合、手動でDBA /開発者の介入が必要です。そうでない場合、SQLServerが統計を更新します。

DBA /開発者として、統計が古いかどうかを確認する方法は?私たちは何をすべき?

4

2 に答える 2

4

このコンテキストでの統計とは、RDBMSが特定のインデックスの値を取得するサンプリングを指します。大まかに言えば、これはエンジンに値の分布のアイデアを与え、効率的なクエリを計画するのに役立ちます。DBCC SHOW_STATISTICSを使用して、統計セットの実際の内容を確認できます。

DBCC SHOW_STATISTICS (table_name, index_name)

インデックスの統計は、テーブル内のデータ(したがって、インデックス値の分布)が変更されると、時間の経過とともに古くなる可能性があります。これにより、クエリ実行プランが最適化されない可能性があります。そのため、統計を最新の状態に保つことを目指す必要があります。

UPDATE STATISTICS T-SQLコマンドを使用して、統計を手動で更新することも、自動的に更新するように設定することもできます。最初のMSDNリンクから:

自動更新統計オプションAUTO_UPDATE_STATISTICSがオンの場合、クエリオプティマイザは、統計が古くなっている可能性がある時期を判断し、クエリで使用されたときに統計を更新します。

于 2012-07-04T03:12:23.960 に答える
1

次のコマンドを使用して、統計が最新であるかどうかを確認できます。

select  object_name(ind.object_id) as TableName
,       ind.name as IndexName
,       stats_date(ind.object_id, ind.index_id) as StatisticsDate
FROM    sys.indexes ind
order by 
        stats_date(ind.object_id, ind.index_id) desc
于 2012-07-04T04:56:47.590 に答える