2017-05-02 1 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 행, 다음 다음 한 50, 40 다음 55 등 시간이 나는의 끝에 도달하지 전에 상태를 보여줍니다 나는 안에 뭐가 보려면 다음 쿼리를 사용하여 동일한 명령을 발행하는 계획 캐시. 요점은 SQL Server가 계획 캐시를 매우 작게 유지한다는 것입니다. 내 조사의 주된 이유는 정상적인 하루 작업 부하에서 높은 부하가없는 우리의 기준선에 비해 높은 CPU입니다. 지속적으로 65-80 %

성능 카운터는 계획 캐시 적중률에 대해 낮은 값을 나타냅니다. 50 %, 높은 컴파일 - 초당 2000 건의 배치 요청 중 400 개와 높은 CPU - 73 개 평균. 무엇이이 문제를 일으킬 수 있습니까?

질문의 주된 목적은 빈 계획 캐시의 가능한 이유를 학습하는 것입니다.

메모리는 OK입니다 - 최소 : 0 최대 : 나는 또한 메모리 압력의 흔적이 발견되지 않았다 245000.

- PLE, 게으른 쓰기, 무료 목록 디스크 활동이 단지 확인했다 포장 마차, 로그 말하지 않았다 물건. 나는이 문제의 가능한 원인을 찾아 왔으므로 조사를 진행할 수있었습니다.

편집은 :

SQL Server 2008 plan cache is almost always empty

을하지만 권고 사항 중 어느 것도/가능한 이유는 관련이 없다 : 나는 또한이 스레드 생각했다.

+1

dba.stackexchange.com에서이 질문을해야합니다. –

답변

2

질문의 주된 목적은 빈 계획 캐시의 가능한 이유를 학습하는 것입니다. 당신이 특히 알고 싶다면 the thread you referred will help you

에, 마틴 스미스에서 답을 배울 경우 계획이 비워지고 이유

, 난 확장 이벤트를 사용하여 확장 이벤트

아래에 시도하는 것이 좋습니다

enter image description here

+0

고마워요. 나는 당신을 확실히 고려할 것입니다. 그러나 다른 어떤 방법, 예를 들어 프로파일 러가 있습니까? SQL Server 2008 R2가 있습니다 –

+0

방금 ​​프로파일 러를 선택 했으므로 프로파일러에서 이벤트가 표시되지 않습니다. – TheGameiswar

+0

잠시 동안 마틴 기사를 닫으십시오. 쿼리가 너무 나쁘기 때문에 계획이 캐시가 아닙니다. 이럴 수 있습니까?이 줄에있는 것이 있습니까? – KumarHarsh