Un'altra domanda del server SQL: ho una semplice query che mi dà l'SQL più intenso della CPU da quando sono stati ripristinati i contatori:
select top 10
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
qs.plan_handle, st.text
from
sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.plan_handle) as st
group by qs.plan_handle, st.text
order by sum(qs.total_worker_time) desc
Domanda 1: che cos'è esattamente plan_handle
? Non sembra essere un hash del piano, come in Oracle. Lo chiedo perché voglio essere in grado di rilevare la situazione in cui il piano di una dichiarazione è cambiato.
Domanda 2: Una volta che ho un plan_handle, sono interessato al piano reale. Quindi faccio, per esempio:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
Nella colonna query_plan ottengo un link che, quando faccio clic, visualizza un documento XML. Se lo salvo su disco come qualunque.sqlplan, posso fare doppio clic su Windows e viene visualizzato correttamente in Management Studio. Sicuramente ci deve essere un modo per evitare questo passaggio ?!
Domanda 3: c'è un modo per riconvertire l'XML in un formato testuale, come ai vecchi tempi di SET SHOWPLAN_TEXT? Voglio essere in grado di visualizzarli graficamente, ma anche di automatizzarli diffondendoli in qualche modo significativo.
Grazie!
<ShowPlanXML xmlns="http://schemas.microsoft.com...
ma non c'è ancora modo di visualizzarlo direttamente: prima devo salvarlo su disco come.sqlplan
file. Strano. Grazie anche a :)