1. 실행 중인 요청 조회
SQL
SELECT
r.session_id,
r.start_time,
r.status,
r.command,
r.cpu_time,
r.total_elapsed_time,
r.wait_type,
r.wait_time,
r.blocking_session_id,
t.text AS sql_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
ORDER BY r.total_elapsed_time DESC;- total_elapsed_time → 실행된 시간(ms)
- wait_type / wait_time → 어떤 리소스를 기다리고 있는지
- blocking_session_id → 다른 세션에 의해 막혀 있는지 여부
- sql_text → 실제 실행 중인 SQL 문장
2. 세션별 누적 리소스 사용량 확인
SQL
SELECT
s.session_id,
s.login_name,
s.host_name,
r.cpu_time,
r.total_elapsed_time,
r.logical_reads,
r.writes,
t.text AS sql_text
FROM sys.dm_exec_sessions s
JOIN sys.dm_exec_requests r ON s.session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
ORDER BY r.cpu_time DESC;→ CPU, I/O를 많이 쓰는 세션을 확인 가능
📌 정리하면:
- **blocking_session_id**는 "누가 막고 있는지"를 알려줌
- **total_elapsed_time**과 **wait_type**을 보면 "어떤 작업이 오래 걸리는지"를 알 수 있음