mssql 에서 디스크i/o 확인하는 쿼리

By | 2025-07-09

MSSQL에서 디스크 I/O 사용량을 확인하려면 sys.dm_io_virtual_file_statssys.master_files 뷰를 활용할 수 있습니다. 아래는 데이터베이스별로 파일 I/O 통계를 보여주는 쿼리입니다:

SELECT
    DB_NAME(vfs.database_id) AS database_name,
    mf.physical_name,
    mf.type_desc,
    vfs.num_of_reads,
    vfs.num_of_writes,
    vfs.io_stall_read_ms,
    vfs.io_stall_write_ms,
    vfs.size_on_disk_bytes / 1024 / 1024 AS size_on_disk_MB,
    vfs.num_of_reads + vfs.num_of_writes AS total_io,
    vfs.io_stall_read_ms + vfs.io_stall_write_ms AS total_io_stall_ms
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS vfs
JOIN sys.master_files AS mf
    ON vfs.database_id = mf.database_id
    AND vfs.file_id = mf.file_id
ORDER BY total_io_stall_ms DESC;

주요 컬럼 설명:

  • database_name: 해당 파일이 속한 데이터베이스
  • physical_name: 실제 물리적 경로
  • type_desc: 데이터 파일 또는 로그 파일 여부
  • num_of_reads, num_of_writes: 읽기/쓰기 횟수
  • io_stall_read_ms, io_stall_write_ms: 읽기/쓰기 대기 시간(ms)
  • size_on_disk_MB: 디스크 상 파일 크기
  • total_io: 총 I/O 횟수
  • total_io_stall_ms: 총 I/O 대기 시간(ms)

참고:

  • 이 쿼리는 누적 값이므로 SQL Server 인스턴스가 시작된 이후부터의 데이터를 보여줍니다.
  • 정확한 성능 분석을 위해 주기적으로 데이터를 캡처하고 비교하는 방식이 좋습니다.

답글 남기기

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