2

クエリを改善するためのオプションを確認したいと思います。

場合によっては、運用サーバーでテストを実行したいので、DBCC FREEPROCCACHE と DBCC DROPCLEANBUFFERS を使用してサーバー キャッシュ全体をクリアすることができません。

私の接続/スコープに対してのみ一種の「キャッシュクリーン」を行う方法を教えてください。

ありがとう。

4

3 に答える 3

5

DBCC FREEPROCCACHE (plan_handle | sql_handle | pool_name)

plan_handle またはその他のオプションを渡すことで、特定の sp またはクエリのキャッシュをクリアできます。

于 2012-09-12T11:26:26.100 に答える
2

バッファーはユーザー固有のテーブルに保持されたり、ユーザーごとに格納されたりすることはありません。SQLServerは、どのクエリに対してどのアイテムが保持されているかわからないため、バッファーを選択的にクリアする方法はありません。そうすることで、ほとんどすべての場合に不要なオーバーヘッドが発生します(現在実行しようとしていることを除く。申し訳ありません。)それにもかかわらず、オプションがあります。

ただし、問題を回避できない場合でも、問題を改善するための提案があります。

  • with(RECOMPILE)を使用して、クエリに新しいプランを検索させることができますが、それではキャッシュはクリアされません。
  • 各クエリを2回実行して、データがバッファリングされた後の実行速度を確認できます。
  • 2つの方法を繰り返し交互に実行して、速度が速くなるかどうか、速度差がどの方向に収束するかを確認できます。
  • 1日か2日間隔で、またはサーバーのリセット後に実行できます。(これは、実動サーバーがとにかく時々リセットされる場合です。)
  • この記事には、そのような状況でテストするための追加のアイデアがあります。

    于 2012-05-23T17:25:07.303 に答える
    0

    ダウンタイムが問題ない場合は、データベースをオフラインにして、その後すぐにオンラインにすることができます。

    于 2012-05-23T20:33:00.463 に答える