SQL Server 2008은 실행 계획의 작성 날짜를 저장합니까?


13

우리는 최근에 데이터베이스의 스키마를 수정하는 데 사용하는 응용 프로그램을 업그레이드했습니다. 이러한 변경으로 인해 캐시 된 실행 계획이 삭제 될 수 있습니다. SQL Server가 여러 가지 새로운 계획을 만들도록 강요하면 사용자 경험이 느려질 수 있습니다. 이것이 사실인지 알고 싶습니다.

제 질문은 SQL Server 2008이 캐시 된 실행 계획의 생성 날짜를 저장합니까? 관리 뷰 sys.dm_exec_cached_plans에는 날짜 필드가 없으므로 의심하지 않습니다.

답변:


12

에 저장되지 sys.dm_exec_cached_plans않으며 찾을 수있는 계획 XML의 어느 곳에도 묻혀 있지 않습니다. 그러나 다른 DMV에는 유용한 정보가 있습니다.

저장 프로 시저의 경우 계획이 캐시 된 시간을 얻을 수 있습니다 sys.dm_exec_procedure_stats.

SELECT TOP(250) 
    p.name AS [SP Name]
    , ps.execution_count
    , ps.cached_time
FROM 
    sys.procedures p WITH (NOLOCK)
INNER JOIN 
    sys.dm_exec_procedure_stats ps WITH (NOLOCK)
ON  p.[object_id] = ps.[object_id]
WHERE 
    ps.database_id = DB_ID()
ORDER BY 
    ps.cached_time DESC 
OPTION 
    (RECOMPILE);

임시 쿼리의 경우 생성 시간은 sys.dm_exec_query_stats다음 과 같습니다.

SELECT TOP(250) 
    st.[text] AS [QueryText]
    , qs.execution_count
    , qs.creation_time
FROM 
    sys.dm_exec_cached_plans cp WITH (NOLOCK)
INNER JOIN
    sys.dm_exec_query_stats qs WITH (NOLOCK)
ON  qs.plan_handle = cp.plan_handle
CROSS APPLY 
    sys.dm_exec_sql_text(cp.plan_handle) st
WHERE 
    cp.objtype = N'Adhoc' 
ORDER BY 
    qs.creation_time DESC 
OPTION 
    (RECOMPILE);

@SqlKiwi에 따르면 creation_time에서 cached_time으로의 변경은 2008 년에 프로 시저와 트리거가 추가되었고보다 구체적인 이름을 선택할 수있게 되었기 때문입니다. 생성 / 캐시 된 시간은 원래 계획의 생성 시간이 아니라 마지막 컴파일을 반영합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.