私のプランキャッシュはほとんど空です。私は内部だものを見るために次のクエリを使用します。ほとんど空のプランキャッシュ
SELECT dec.plan_handle,qs.sql_handle, dec.usecounts, dec.refcounts, dec.objtype
, dec.cacheobjtype, des.dbid, des.text,deq.query_plan
FROM sys.dm_exec_cached_plans AS dec
join sys.dm_exec_query_stats AS qs on dec.plan_handle=qs.plan_handle
CROSS APPLY sys.dm_exec_sql_text(dec.plan_handle) AS des
CROSS APPLY sys.dm_exec_query_plan(dec.plan_handle) AS deq
WHERE cacheobjtype = N'Compiled Plan'
AND objtype IN (N'Adhoc', N'Prepared')
一つの瞬間、私はの終わりに到達しないことができる前に、それは私に82行、しばらく時間の次の1 50、そして40そして55などを示しています同じコマンドを発行するプランキャッシュ。要点は、SQL Serverはプランキャッシュを非常に小さく保つことです。 私の調査の主な理由は、高い負荷のないベースラインと比較してCPU負荷が高いことです。通常の仕事負荷では常に65-80%です。
パフォーマンスキャッシュカウンタの値は、 50%、高コンパイル - 1秒あたり2000回のバッチ要求のうち400回と高CPU - 73回の平均。何がこの現象を引き起こす可能性がありますか?
質問の主な目的は、空のプランキャッシュの考えられる原因を確認することです。
メモリはOKです - 最小:0、最大:245000.
私もメモリ圧力の兆候に気付かなかった - PLE、怠惰な書き込み、フリーリストは、ディスクアクティビティをストールだけでOKだった、ログが教えてくれませんでした事。 私はこの原因の可能性についてここに来たので、調査を進めることができました。
EDIT:
SQL Server 2008 plan cache is almost always empty
しかし、/考えられる理由は、関連する勧告のいずれも:私はまた、このスレッドと考えられてきました。
これはdba.stackexchange.comでお尋ねください。 –