SQL Serverの統計はデータベースまたはバッファープールに格納されますか?


10

統計はデータベースではなくメモリに保持されているのでしょうか。データベースをprodサーバーから開発サーバーにバックアップ/復元すると、同じ統計が保持されるため、開発サーバーで実行しても実行計画に大きな違いはありませんか?

回答:


15

バッファプールはデータベースのキャッシュです。「または」が存在することはありません。バッファプールにあるものは、常にデータベースにもあります。また、データベースから読み取られたものは、一時的にであっても、バッファープールに存在する必要があります。

質問に関しては:統計はデータベースにあるので、バックアップ/復元は統計を保持します。

ただし、統計の保持は再現性を保証するものではありません。CPUの数やRAMの容量など、他の要因が計画の生成に影響します。


わかりました。説明してくれてありがとう!
Joy Walker


3

レムス前記テーブル統計はテーブルとインデックスのような他のオブジェクトと同様のデータベースに格納されています。それらは実行計画の選択に大きな役割を果たしますが、他の要因もあります。

そうは言っても、SQL Serverは別の種類の統計情報を知っています。統計情報は、最近の動作に関する情報を提供します。

たとえば、DMV ys.dm_db_index_usage_statssys.dm_db_index_operational_statsインデックスの使用方法に関する統計を返します。

これらの統計はメモリにのみ保存されます。サーバーの再起動時に迷子になり、バックアップと一緒に移動しません。

ただし、オプティマイザはこれらを使用して計画を生成することもしません。


ええ、これが私が最初に質問/混乱を抱えた理由です。統計はDMVに似ていると思っていました。サーバーが再起動したとき、またはdbが別のサーバーに復元されたときに、これらは失われる可能性があります。指摘してくれてありがとう。
Joy Walker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.