Eine weitere Frage zum SQL Server: Ich habe eine einfache Abfrage, die mir das CPU-intensivste SQL seit dem Zurücksetzen der Zähler bietet:
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
Frage 1: Was genau ist das plan_handle
? Es scheint kein Hash des Plans zu sein, wie es in Oracle der Fall ist. Ich frage, weil ich in der Lage sein möchte, die Situation zu erkennen, in der sich der Plan einer Erklärung geändert hat.
Frage 2: Sobald ich einen plan_handle habe, interessiert mich der eigentliche Plan. So mache ich zum Beispiel:
select * from sys.dm_exec_query_plan (0x060006001F176406B8413043000000000000000000000000)
In der Spalte query_plan erhalte ich einen Link, der beim Klicken ein XML-Dokument anzeigt. Wenn ich es als Whatever.sqlplan auf der Festplatte speichere, kann ich es in Windows doppelklicken und es wird in Management Studio korrekt angezeigt. Sicherlich muss es einen Weg geben, diesen Schritt zu vermeiden?!
Frage 3: Gibt es eine Möglichkeit, das XML wieder in ein Textformat zu konvertieren, wie in den alten Tagen von SET SHOWPLAN_TEXT? Ich möchte sie grafisch anzeigen können, aber auch automatisieren, um sie auf sinnvolle Weise zu unterscheiden.
Vielen Dank!
quelle
<ShowPlanXML xmlns="http://schemas.microsoft.com...
aber es gibt immer noch keine Möglichkeit, es direkt anzuzeigen - ich muss es zuerst als.sqlplan
Datei auf der Festplatte speichern. Seltsam. Danke tho ':)