elapsetime과 disk i/o를 한번에 확인하는 쿼리

By | 2025-07-08

SQL Server에서 SQL 문장 단위로 Elapsed Time(전체 소요 시간)과 Disk I/O(Physical Reads)를 함께 확인하는 쿼리는 다음과 같이 구성할 수 있습니다.


✅ 목적: SQL 별 소요 시간 + 디스크 I/O 한눈에 보기

sql복사편집SELECT 
    TOP 50
    st.text AS sql_text,
    qs.execution_count,
    qs.total_elapsed_time / 1000 AS total_elapsed_ms,
    (qs.total_elapsed_time / qs.execution_count) / 1000 AS avg_elapsed_ms,
    qs.total_worker_time / 1000 AS total_cpu_ms,
    qs.total_logical_reads AS logical_reads,
    qs.total_physical_reads AS physical_reads,
    qs.total_logical_writes AS logical_writes,
    qs.creation_time,
    qs.last_execution_time
FROM 
    sys.dm_exec_query_stats AS qs
CROSS APPLY 
    sys.dm_exec_sql_text(qs.sql_handle) AS st
ORDER BY 
    qs.total_physical_reads DESC; -- 또는 avg_elapsed_ms DESC

✅ 설명

컬럼설명
sql_textSQL 문장 (최대 4KB)
execution_count실행 횟수
total_elapsed_ms총 실행 시간 (ms)
avg_elapsed_ms평균 실행 시간
total_cpu_ms총 CPU 사용 시간 (ms)
physical_reads디스크에서 읽은 횟수 (Disk I/O)
logical_reads메모리에서 읽은 횟수
logical_writes메모리 → 디스크로 쓴 횟수
creation_time처음 실행된 시간
last_execution_time마지막으로 실행된 시간

✅ 팁: 실행 시간 기준 정렬 변경

  • 디스크 I/O가 높은 쿼리: ORDER BY qs.total_physical_reads DESC
  • 실행 시간이 오래 걸리는 쿼리: ORDER BY avg_elapsed_ms DESC
  • CPU를 많이 쓰는 쿼리: ORDER BY total_cpu_ms DESC

✅ 특정 SQL 추적 (원하면 추가)

query_hash, sql_handle, 또는 SQL 텍스트 기준으로 특정 쿼리만 추적하고 싶다면 WHERE 조건을 추가하시면 됩니다.

예:

sql복사편집WHERE st.text LIKE '%your_table_name%'

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다