O SQL Server 2008 armazena a data de criação dos planos de execução?


13

Atualizamos recentemente um aplicativo que usamos, que envolvia a modificação do esquema do banco de dados. Essas alterações podem ter forçado o descarte dos planos de execução em cache. Se o SQL Server fosse forçado a criar vários novos planos, isso poderia ter atrasado a experiência do usuário. Eu gostaria de descobrir se esse era o caso.

Portanto, minha pergunta é: o SQL Server 2008 armazena a data de criação dos planos de execução em cache? A visão de gerenciamento sys.dm_exec_cached_plansnão possui nenhum campo de data, então suspeito que não.

Respostas:


12

Ele não é armazenado sys.dm_exec_cached_plansnem está enterrado em nenhum lugar do XML do plano que eu possa encontrar. No entanto, há informações úteis em outras DMVs.

Para procedimentos armazenados, podemos obter o horário em que um plano foi armazenado em cache 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);

Para consultas ad-hoc, há o tempo de criação em 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);

De acordo com @SqlKiwi ... a mudança de creation_time para cached_time ocorreu apenas porque os procedimentos e gatilhos foram adicionados em 2008 e foi aproveitada a oportunidade para escolher um nome mais descritivo. O tempo criado / em cache reflete a última compilação, não o tempo de criação do plano original.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.