DBAtlas · 데이터베이스 운영 아틀라스

활성 쿼리와 비용 확인

SQL Server세션

명령어

SELECT r.session_id,
       r.status,
       r.command,
       DB_NAME(r.database_id) AS db,
       r.cpu_time,
       r.total_elapsed_time / 1000 AS elapsed_sec,
       r.reads, r.writes, r.logical_reads,
       r.wait_type,
       SUBSTRING(t.text,
         (r.statement_start_offset/2)+1,
         ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(t.text)
            ELSE r.statement_end_offset END - r.statement_start_offset)/2)+1) AS running_statement
FROM   sys.dm_exec_requests r
  JOIN sys.dm_exec_sessions s ON s.session_id = r.session_id
  CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE  s.is_user_process = 1 AND r.session_id <> @@SPID
ORDER BY r.total_elapsed_time DESC;

하는 일

현재 실행 중인 사용자 쿼리를 CPU, 경과 시간, 읽기/쓰기, 정확한 문장 텍스트와 함께 보여 준다.

사용 시점

실시간 성능 저하 중 어떤 쿼리가 리소스를 소비하는지 찾기 위해.

주의

statement_start/end_offset은 배치 전체가 아니라 실행 중인 정확한 문장을 추출한다. 조회 전용이며 위험 없음.

DBAtlas에서 열기 →

관련 항목