Wie erfahren Sie, wie viel E / A-Ressourcen eine Aufgabe, Session, Anfrage oder Transaktion aktuell verwendet?
-
29-09-2020 - |
Frage
Wie erfahren Sie, wie viel E / A-Ressourcen eine Aufgabe, Sitzung, Anfrage oder Transaktion aktuell verwendet?
Durch die Aufgabe meine ich den DMV namens dmv sys.dm_os_tasks . Nach Sitzung meine ich die DMV SYS.DM_EXEC_SESSIONS
Manchmal hat eine Sitzung eine Anfrage, auf Anfrage meine ich den dmv sys.dm_exec_requests Oder eine Sitzung kann stattdessen eine Transaktion haben - sys. dm_tran_database_transaktionen
Wie kann ich diese Dinge mit
Ich hatte einen Blick auf den DMV namens DMV SYS.DM_OS_TASKS .
sys.dm_os_tasks - nicht anzeigen pending_io_byte_count
Dies ist ein Beispiel für die Ergebnisse meiner Abfrage, während ich versuchte, einige CXPACKETS-Wartezeiten zu überwachen.
pending_io_count scheint in Ordnung zu sein, aber Pending_IO_BY_COUNTs sind immer Null.
Was könnte eine Alternative sein? Ich möchte die E / A-Nutzung jedes Parallelprozesses messen.
In der Tat könnte es nur die E / A-Nutzung jeder Sitzung oder Anfrage sein.
Sogar Sitzungen ohne Anforderung sind manchmal gut zu sehen, da sie andere Prozesse blockieren könnten.
Lösung
Wenn Sie nach dem eigentlichen physischen E / A für eine Abfrage suchen, sollten Sie in der XML-ShowPlan für das Element "ActualphysicalReads" ansehen:
schemas.microsoft.com/sqlserver/2004/07/showplan
Diese physikalischen Reads werden jedoch wahrscheinlich nur auftreten, wenn der Plan erstmals zwischengespeichert ist.Nachfolgende Läufe ziehen eher die Seiten aus dem Speicher, nicht von der Festplatte.
hth