MSSQL에서 디스크 I/O 사용량을 확인하려면 sys.dm_io_virtual_file_stats
및 sys.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 인스턴스가 시작된 이후부터의 데이터를 보여줍니다.
- 정확한 성능 분석을 위해 주기적으로 데이터를 캡처하고 비교하는 방식이 좋습니다.