SQL Server 2008 memorizza la data di creazione dei piani di esecuzione?


13

Di recente abbiamo aggiornato un'applicazione che utilizziamo, che comportava la modifica dello schema per il database. Queste modifiche potrebbero aver costretto a scartare i piani di esecuzione memorizzati nella cache. Se SQL Server fosse stato costretto a creare una serie di nuovi piani, ciò avrebbe potuto rallentare l'esperienza dell'utente. Vorrei scoprire se fosse così.

Quindi, la mia domanda è: SQL Server 2008 memorizza la data di creazione dei piani di esecuzione memorizzati nella cache? La vista di gestione sys.dm_exec_cached_plansnon ha campi data, quindi sospetto di no.

Risposte:


12

Non è memorizzato in sys.dm_exec_cached_plans, né è sepolto in nessun punto del piano XML che riesco a trovare. Ci sono comunque informazioni utili in altri DMV.

Per le procedure memorizzate possiamo ottenere il tempo in cui un piano è stato memorizzato nella cache da 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);

Per le query ad hoc, c'è il tempo di creazione in 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);

Secondo @SqlKiwi ... il passaggio da creation_time a cached_time è stato solo perché nel 2008 sono state aggiunte procedure e trigger e si è colta l'opportunità di scegliere un nome più descrittivo. Il tempo creato / memorizzato nella cache riflette l'ultima compilazione, non l'ora di creazione del piano originale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.