성능분석 8탄 – IO 통계 (DISK 활동 분석)
- Version : SQL Server 2005, 2008, 2008R2, 2012
SQL Server는 디스크에서 데이터를 읽고 쓰기 작업을 한다. 모든 쓰기 작업은(insert, update, delete) 반드시 디스크에 기록되어야 한다. 쿼리는 항상 메모리 캐시(buffer pool)에서 데이터를 반환하지만 원하는 데이터가 캐시에 없는 경우 디스크로부터 데이터를 읽어 캐시에 적재 후 반환한다. 이때 IO 병목이 발생하며 성능 조사가 필요하다.
SQL Serve는 데이터 및 로그 IO 요청에 대한 모든 정보를 수집하고 집계한다. 다음 DMV를 사용하여 쓰기 및 읽기의 수를 확인한다.
select db_name(io.database_id) as database_name, mf.physical_name as file_name, io.* from sys.dm_io_virtual_file_stats(NULL, NULL) io join sys.master_files mf on mf.database_id = io.database_id and mf.file_id = io.file_id order by (io.num_of_bytes_read + io.num_of_bytes_written) desc; |
io_Stall_* 시간은 디스크에 데이터를 전송하기 위해 대기하는 총 시간을 나타낸다. 전송된 총 바이트의 수(read, write)는 IO 관점에서 데이터베이스가 얼마나 바쁜지 확인 할 수 있는 좋은 지표이다.
[참고자료]
http://rusanu.com/2014/02/24/how-to-analyse-sql-server-performance/
2014-03-18 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
성능분석 10탄 – 쿼리 실행 대기 시간 분석(xevent) (0) | 2015.07.23 |
---|---|
성능분석 9탄 – 쿼리 실행 분석 (0) | 2015.07.23 |
성능분석 7탄 – 프로파일러 대기 유형 및 PREEMPTIVE_OS_WRITEFILEGATHER (0) | 2015.07.23 |
성능분석 6탄 – CPU 경합 및 동시성 관련 대기 유형 (0) | 2015.07.23 |
성능분석 5탄 – 메모리 및 네트워크 관련 대기 유형 (0) | 2015.07.23 |