SQL Server 2016でクエリの実行が遅い。
サーバー構成:
ring buffer
クエリを実行して、物理メモリが少ないかどうかを確認しました。メモリプレッシャーのリングバッファーを確認した理由は、キャッシュをクリアするスクリプトを実行しているユーザーがいない場合でも、プランのキャッシュも頻繁にクリアされるためです。Avail Phys Mem.KB
。
私が学んだことの1つは、すべてのRESOURCE_MEMPHYSICAL_LOW
インジケータープロセスが2であることです。つまり、メモリの問題は、SQL Serverに割り当てられたメモリにあり、OSや他のアプリケーションで利用可能な残りのメモリではありません。ご参考までに。これはSQL Server専用サーバーです。
また、パフォーマンスモニターでAvaialable MBytes
を確認したところ、以下のように値16,662.00(16 GB)が表示されました。
OS +その他のアプリケーションには16 GBで十分だと思います。これはSQLサーバー専用サーバーです。
サーバーの診断も確認しました。それは25 GBが利用可能であると言います。
だから今私は混乱しています:
RESOURCE_MEMPHYSICAL_LOW
フラグは、OS、外部プロセス、またはSQL Serverによって設定されていますか?@Shankyの回答による詳細。
HAND_EXTERNAL
のSQL Serverプランのrounds_countは増加しています。詳細。
この巨大なメモリ許可(私がチェックした1つのクエリ、メモリ許可は〜7GB)はSQLサーバーからのメモリ不足を引き起こし、これがプランキャッシュのクリアとRESOURCE_MEMPHYSICAL_LOW
フラグの原因になる可能性がありますか?.
このサーバーでメモリ不足はありませんか。
情報が限られているため、確実には言えません。メモリプレッシャーを通知するには、さらに多くのパラメーターとperfmonからの出力が必要です。しかし、そうです。あなたが投稿したクエリ出力から、[2018-10-23 11:22:30:457
]の期間に、SQL Serverシステム全体ではなく、一部のプロセスのメモリが実際に不足していました。
rESOURCE_MEMPHYSICAL_LOWフラグがOSまたは外部プロセスまたはSQLサーバーによって設定されています。
RESOURCE_MEMPHYSICAL_LOW
にはIndicatorProcess
からの2
の値があるという出力を見てください。これは、IndicatorSystem
が実行する場合、実行中の特定のプロセスが実際にメモリ不足に直面していたことを意味します値が2の場合は、システム全体のメモリに負荷がかかります。また、メモリ不足は、仮想メモリ(VAS)が低く、物理(RAM)が低いことに起因していることに注意してください。つまり、1つの時間の値を取るだけで、継続的のメモリプレッシャーがあるとは言いがたいことがわかります。 sys.dm_os_ring_buffersを使用してSQL Serverのメモリの問題を診断する を読んで、IndicatorsystemとIndicatorProcessの値の意味を理解することをお勧めします
lPIMを有効にしてこの問題を修正する必要がありますか?
LPIMはではない問題を修正するmask問題と回避策として来るでしょう。リソースモニターがメモリ不足の通知にフラグを立てている原因を見つける必要があります。実行中のプロセスが原因である可能性があります。プランキャッシュが頻繁にクリアされるのは、SQL Server 2016以降から多くの人が報告したことであり、クエリストアが原因である可能性があります可能性があります、それを使用していますか? 。クエリストアは、以前はプランキャッシュのクリアの原因となっていましたが、最新のSPを使用しているので、この要素に疑問があります。
キャッシュのメモリ負荷を確認するには、DMVも使用できます sys.dm_os_memory_cache_clock_hands
SELECT *
FROM sys.dm_os_memory_cache_clock_hands
WHERE rounds_count > 0
rounds_count
が増加している場合、これは、クロックを強制的にキャッシュmoreに頻繁にスイープさせ、エントリを削除するというプレッシャーがあったことを意味します。
編集:
いくつかのクエリによる巨大なメモリ許可に直面しており、これによりRESOURCE_SEMAPHOREは他のクエリを待機します。この巨大なメモリ許可(1つのクエリを確認したところ、メモリ許可は〜7GB)はSQLサーバーからのメモリ不足を引き起こし、これが原因である可能性がありますプランキャッシュのクリアとRESOURCE_MEMPHYSICAL_LOWフラグ。
はい、おそらく、この質問で 特定のスレッド が発生するのを確認しました。統計を更新し、インデックスをデフラグしたことを確認する前に、それを追加します。統計が古くなっていると、プランが不良になり、結果としてより多くのメモリを要求し、セマフォが待機する可能性があります。
以下は、同様の問題について話しているスレッドのリストです