Wait Events sind das wichtigste Diagnose-Tool für SQL Server Performance-Probleme. Während systemweite Wait-Statistiken einen Überblick geben, ermöglicht das Session-spezifische Monitoring die Analyse einzelner Queries oder Verbindungen.
DMVs für Session Wait Events
-- Aktuelle Waits einer spezifischen Session
SELECT
r.session_id,
r.wait_type,
r.wait_time / 1000.0 AS wait_time_sec,
r.last_wait_type,
r.status,
t.text AS sql_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id = 55; -- Session-ID anpassen
Kumulative Waits per Session
-- Kumulative Wait-Statistiken seit Session-Start
SELECT
session_id,
wait_type,
waiting_tasks_count,
wait_time_ms,
max_wait_time_ms,
signal_wait_time_ms
FROM sys.dm_exec_session_wait_stats
WHERE session_id = 55
ORDER BY wait_time_ms DESC;
Die wichtigsten Wait Types
- LCK_M_*: Lock-Waits – Blocking-Problem, prüfe sp_who2
- PAGEIOLATCH_*: I/O-Waits – Storage-Performance-Problem
- CXPACKET: Parallel-Query-Waits – ggf. MAXDOP anpassen
- SOS_SCHEDULER_YIELD: CPU-Druck – fehlende Indizes oder schlechte Pläne
Session-spezifische Wait-Analyse ist der direkteste Weg, um festzustellen, warum eine bestimmte Query langsam ist. Kombiniert mit dem Execution Plan hat man alle Werkzeuge für präzise SQL Server-Performance-Diagnose.








