web-dev-qa-db-ja.com

統計を更新するタイミング

次のメンテナンスプランを継承しました。

  • 古いデータをクリーンアップする
  • DBの整合性をチェックします
  • データベースとトランザクションログのバックアップを実行する
  • インデックスを再編成します
  • 統計の更新
  • 古いバックアップとメンテナンスプランファイルを削除する

23分のメンテナンスプランのうち、統計の更新には13分という驚異的な時間がかかります。この13分間は、データベースへのアクセスがブロックされます(少なくとも、このDBから他のデータベースへのレプリケーションは一時停止されます)。

私の質問は:

統計をいつ更新する必要がありますか、そしてなぜですか?

これは、私たちが日常よりも頻繁に行うべきではないことのようです。私は、不要なメンテナンスを行うという「ただの」心構えから抜け出そうとしています。

44
Onion-Knight

メンテナンスウィンドウがない場合、統計を毎日更新することはおそらく少しやりすぎです。 特に、データベースの統計の自動更新をオンにしている場合。元の投稿では、このメンテナンスプランが原因でパフォーマンスが低下しているとユーザーが言っていました。このメンテナンスプランを実行する他の時間はありませんか?他のウィンドウはありませんか?インデックスを再構築するのはいつですか?その操作が発生すると、統計が自動的に更新されます(ただし、インデックスに対してオフになっていない場合)。

統計を更新する正確な頻度は、インデックスとデータが受け取っているデータ変更の量に大きく依存します。データへの変更がほとんどない場合(INSERTUPDATEDELETE)、統計更新ジョブのスケジュールの頻度を減らすことができます。

統計が古くなっているかどうかを確認する1つの方法は、実行計画を確認することであり、推定された行が実際に返された行と大幅に異なる場合は、間隔を増やす必要があることを示しています。あなたの場合、あなたは反対の方向に進んでおり、少し試してみることもできます。統計を毎週更新し、古くなった統計の明確な兆候が見え始めたら、そこから進んでください。

データベースに統計の自動更新を使用している場合、統計が更新されるしきい値については このリファレンス を参照してください。

28
Thomas Stringer

統計を更新するタイミング

自動統計更新機能が要件に対して十分でない場合に限ります。つまり、統計の自動作成と自動更新がオンになっていて、統計が正確または最新ではないためにクエリプランが正しくない場合、統計の作成と更新を制御することをお勧めします。 SQLサーバーのパフォーマンスとクエリの実行時間に問題がない場合。

次に、Updates StatisticsコマンドをMaintenance Plansから停止することをお勧めします

統計の更新は重要かつ有用です1. SQL Serverクエリオプティマイザーは、開発と管理のコストを低く抑えながら、優れたクエリプランを一貫して作成できます2.統計はクエリオプティマイザが式の選択性を推定するために使用し、中間および最終クエリ結果のサイズを推定します。 3.優れた統計により、オプティマイザはさまざまなクエリプランのコストを正確に評価し、高品質のプランを選択できます


統計を手動で更新したい場合は、まず統計を知っておく必要があります統計が自動的に更新されるタイミング

SQL Serverクエリオプティマイザーが、統計が最後に作成または更新されてから実質的な更新アクティビティが行われたテーブルの特定の列の統計を必要とする場合、SQL Serverは(自動更新統計を使用して)列の値をサンプリングすることにより、統計を自動的に更新します。 。統計の自動更新は、クエリの最適化またはコンパイルされたプランの実行によってトリガーされ、クエリで参照される列のサブセットのみを含みます。 AUTO_UPDATE_STATISTCS_ASYNCがOFFの場合、クエリのコンパイル前に統計が更新されます

sQLサーバーで統計の更新がいつトリガーされるかを説明する素晴らしい記事を以下に示します。

  1. simple-talkから セクション13.統計情報の自動更新はいつトリガーされますか?
  2. support.Microsoft セクション:Autostats決定の自動化
  3. msdn.Microsoft セクション:SQL Server 2008での統計の維持

統計がいつトリガーされるかがわかったら、統計を手動で更新するタイミングを決定するのに役立ちます

統計とパフォーマンスへの影響について詳しく知るには、 BrentOzar および Kimberly in sqlskills の非常に優れたブログとブロガーをお勧めします。

26
AmmarR