web-dev-qa-db-ja.com

(マシン上で)SQLサービスを再起動すると、サーバーキャッシュがクリアされますか(クエリプランや統計など)。

SQLサービス自体のみを再起動したときに、サーバーキャッシュがワイプされますか(SQLインスタンス/マシンを再起動したときと同様)。

8
J.D.

はい、そうです。 SQL Serverはこれらのキャッシュの維持を担当しているため、SQL Serverのサービスをシャットダウンすると、メモリが解放されてオペレーティングシステムに戻ります。

12
Laughing Vergil

動作は、サービスを単独で再起動する場合と、基盤となるオペレーティングシステムを再起動するためにサービスを再起動する場合とで違いはありません。そのような再起動時にどの情報が消去されますか?

  • クエリプラン? はい
  • テーブル/インデックスデータ? はい
  • 統計? いいえ

(統計を使用するクエリプランは再コンパイルする必要がありますが、それをトリガーするいくつかのイベントまたは条件がない限り、統計を再作成する必要はありません(いくつかあります)。)

トランザクションがロールバックしているときにサービスを停止すると、何も達成されなかった可能性があります。ロールバックは、中断したところから再開する場合がある(または、取得するアクティビティの種類によっては、最初からやり直す必要がある場合があるため)ロールバック)。

ロールバックの完了を待ちきれずにサービスを再起動した場合、それはおそらく、費用がかかるレッスンであり、1〜2回実行するだけで試行を停止できます。見る:

15
Aaron Bertrand

sQLサーバーは、起動時にバッファプールと呼ばれるオペレーティングシステムメモリを予約します。日々のワークロードによってバッファプールが増加し、すべてのページ、キャッシュ、クエリ統計、プロシージャ統計などがバッファプールに格納されます。この情報は、次のイベントが発生するまでバッファプールに常駐します。

  1. sQLサーバー/システムの再起動
  2. dbcc dropcleanbuffersステートメントの実行
  3. メモリ不足。

これが理解に役立つことを願っています。

0
Vinod Narwal