2017-05-02 16 views
0

私のプランキャッシュはほとんど空です。私は内部だものを見るために次のクエリを使用します。ほとんど空のプランキャッシュ

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

しかし、/考えられる理由は、関連する勧告のいずれも:私はまた、このスレッドと考えられてきました。

+1

これはdba.stackexchange.comでお尋ねください。 –

答えて

2

質問の主な目的は、空のプランキャッシュの考えられる原因を学習することです。

それはthe thread you referred will help you

で、マーティン・スミスから答えを学ぶことである場合には、特に知りたい場合は計画が空になっている理由を、私は、拡張イベントを使用することをお勧めし、拡張イベント

下にしてみてください

+0

ありがとうございました。私は間違いなくあなたの推薦を考えます。しかし、他にもプロファイラがありますか?私はSQL Server 2008 R2を持っています –

+0

私はちょうどProfilerをチェックしました、プロファイラーのイベントは見られません – TheGameiswar

+0

しばらくの間、Martinの記事を控えておいてください。クエリーはとても悪いので、計画はcache.Isできません。 – KumarHarsh

関連する問題