トランザクションデータベースのパーティションコピーにコピーする必要のある大きなテーブルがいくつかあります。
これが私の本番アプリケーションのパフォーマンスに影響を与えるのではないかと心配しています。
これを軽減するために、私はリソースガバナーを調査しています。最大5%のCPUとメモリに制限されているリソースプールを使用するようにスクリプトを設定します。
これについて私が確信していない唯一の部分は、PLEへの影響です。
私が理解しているように、テーブルから選択すると、値がキャッシュに読み込まれます。これにより、キャッシュにあった他の何かが強制的に削除されます。 (PLEの基本概念です。)しかし、「強制アウト」アイテムは、指定した5%に制限されますか?
メモリの5%を使用した後、同じ5%のキャッシュされたアイテムのみを強制的に出力しますか?(他の95%は影響を受けません。)
これを尋ねる別の方法は次のとおりです。5%のメモリ制限は5%のキャッシュ制限を言うことと同じですか?
このMSDNページには、メモリ設定がクエリメモリにのみ影響することが記載されています。
MIN_MEMORY_PERCENTおよびMAX_MEMORY_PERCENT
これらの設定は、他のリソースプールと共有できないリソースプール用に予約されているメモリの最小量と最大量です。ここで参照されているメモリは、クエリ実行許可メモリであり、バッファプールメモリ(データページやインデックスページなど)ではありません。プールの最小メモリー値を設定するということは、指定されたメモリーのパーセンテージが、このリソース・プールで実行される可能性のあるすべての要求に使用できることを保証することを意味します。この場合、プールにこのプールに属するワークロードグループに要求がない場合でも、メモリが特定のリソースプールに残っている可能性があるため、これはMIN_CPU_PERCENTと比較して重要な差別化要因です。したがって、アクティブな要求がない場合でも、このメモリは他のプールで使用できなくなるため、この設定を使用するときは十分に注意することが重要です。プールの最大メモリ値を設定すると、リクエストがこのプールで実行されているときに、このパーセンテージを超えるメモリを取得することはありません。
上記は、バッファプールがリソースプールの制限から除外されていることを示しています。したがって、プロセスを実行するためにバッファプール全体が空になる可能性のあるアクションを実行する場合は、プロセスが営業時間外に実行されるようにする必要があります。
以下は、MSDNブログからの抜粋です SQL Serverページの平均余命 :
ページの平均余命(PLE)は、バッファープールの揮発性(BP)を最もよく示しています。これは、SQL Server:Buffer ManagerPerfMonオブジェクトにあるPerfMonカウンターです。非NUMAシステムの場合と同じロジックをノードごとに使用して、NUMAシステムで考慮する必要のあるBuffer Node:Page LifeExpectancyカウンターもあります。
ボラティリティは、バッファプール内のページの平均「寿命」(秒単位)を取得することによって測定されます。ページが上書きされたり古くなったりすると、まったく新しい生活が始まります。
したがって、多くのページが新しいデータで頻繁に上書きされる場合、平均PLEは低くなり、BPのボラティリティは高くなります。
逆に、BPのほとんどのページが上書きされずに長期間そこにとどまる場合、平均PLEは高くなり、BPのボラティリティは低くなります。
では、なぜBPのボラティリティとPLEを気にするのでしょうか。 BPのボラティリティを知ることは私たちに何ができるでしょうか? 「良い」と「悪い」のPLEフィギュアとは何ですか?
PLEは、SQLServerが実行している物理的なIOの量の尺度になります。物理的なIOは、読み取りと書き込みの両方でパフォーマンス上の大きな懸念事項であるため、私があなたの注意を引いてくれることを願っています。
ここのコメントの質問から:
「クエリメモリ」とは何ですか?キャッシュとはどのように異なりますか?
クエリメモリは、クエリの実行に使用されます。ソート、ビットマップ作成、ハッシュテーブルなどに一時的に使用されます。キャッシュにはメモリ内のテーブルデータが含まれます。
私の質問に対する答えは、PLEがリソースガバナーによってまったく保護されないということのようです。それは正しいですか?
正しい。ページの平均余命とは、データページがメモリにとどまる時間のことです。