성능분석 15탄 – I/O 관련 성능 카운터

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

I/O와 관련된 성능 카운터에 대해서 알아본다.

 

Page reads/sec

[SQLServer:Buffer Manager] – [Page reads/sec]에 위치하며 실제 데이터베이스에서 읽은 페이지의 수를 나타낸다. 이 카운터의 성능은 디스크 IO 읽기의 중요한 지표이다. 일반적으로 데이터는 버퍼풀에 캐싱되어 있어 디스크에서는 적은 데이터만 읽어 부하를 줄인다. 이 수가 높게 나타난다면 누락된 인덱스 또는 메모리 부족일 가능성 있다.

 

Page writes/sec

[SQLServer:Buffer Manager] – [Page reads/sec]에 위치하며 실제 데이터베이스에서 쓰기 페이지의 수를 나타낸다. 일부 큰 데이터쓰기는 높은 I/O를 유발하고 성능 하락으로 이어질 수 있다. 또한 I/O가 느린 경우 로그 플러시 대기 지연이 발생할 수 있다.

 

Log Flushes/sec

[SQLServer:Databases] – [LogFlushes/sec]에 위치하며 해당 위치의 Log Flush Wait Time, Log Flush Waits/sec, Log Flush Write Time (ms)와 함께 로그를 기록하는 횟수와 로그를 쓰기위해 기다리는 커밋 수 등을 확인 할 수 있다. OLTP 시스템에서는 이 부분이 주요 병목이 되기도 한다.

 

Checkpoint pages/sec

[SQLServer:Buffer Manager] – [Checkpoint pages/sec]에 위치하며 체크포인트는 Page writes/sec 스파이크를 유발하는 원인이기도 하다. 체크포인트는 자동으로 실행되지만 write 성능에 따라 체크포인트 수준을 조절하기도 한다.

 

Log Write waits

[SQL Server:Wait Statistics] – [Log write waits]에 위치하며 이 성능 카운터는 로그 쓰기의 대기 정보를 알려준다. 로그 버퍼 작성을 기다리는 프로세스에 대한 통계이다.

 

Page IO latch waits

[SQL Server:Wait Statistics] – [Page IO latch waits]에 위치하며 페이지 IO 래치와 관련된 대기 정보이다. 이 카운터는 IO 값을 측정하지 않고 IO 블록킹이 발생한 경우만 측정한다. 또한 읽기 및 쓰기를 구분하지 않는다.

 

Backup/Restore Throughput/sec

[SQLServer:Databases] – [Backup/Restore Throughput/sec]에 위치하며 데이터베이스 백업/복원에 대한 읽기/쓰기 처리량을 나타낸다. 성능 분석을 할 때 종종 백업에 대한 IO의 요구 사항은 간과 되는 경우가 있다. 하지만 백업은 높은 IO를 요구하는 작업으로 실제 백업 시 IO에 대한 문제가 발생하는 경우가 많다. 백업 처리량을 모니터링 하여 IO 스파이크 현상이 발생 할 때 성능 상관관계를 이해해야 한다.

 

PhysicalDisk Object

[PhysicalDisk]에 위치한 오브젝트들은 IO동작을 모니터링 하기 위한 운영체제 카운터이다. 디스크이 큐 길이, 큐 시간, 디스크 처리량 등을 나타낸다. 물리적인 디스크 외에도 논리적인 드라이브 모니터링이 가능하다. SQL Server 자체의 IO 통계와 DMV 정보를 함께 활용하여 디스크 사용량에 대한 다양한 정보를 확인 할 수 있다.

 

IO Data Operations/sec

[Process] – [IO Data Operations/sec]에 위치하며 프로세스가 읽기 및 쓰기 I/O 연산을 요청하는 속도이다. 이 카운터는 프로세스가 파일, 네트워크 및 장치 I/O에서 만들어 내는 모든 I/O 동작을 계산한다. SQL 서버에 의해 보고된 값과 시스템 전체 IO 값이 일치하지 않을 경우를 분석할 때 매우 중요하다. 다른 프로세스에 의해 디스크가 바쁠 때 SQL 서버의 응답시간이 증가하는 것을 발견 할 수 있다.

 

 

[참고자료]

http://rusanu.com/2014/02/24/how-to-analyse-sql-server-performance/

 

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 1291
1966 SQL Server Agent에서 CmdExec 오류 jevida(강성욱) 2016.11.23 2347
1965 Verbose SQL Server Agent Logging jevida(강성욱) 2016.11.23 1756
1964 Windows Event Log에 SQL Server Agent Log 기록 jevida(강성욱) 2016.11.23 2350
1963 SQL Server Agent Error log 위치 변경 jevida(강성욱) 2016.11.23 2610
1962 SQL Server에서 차단을 확인하는 다양한 방법 jevida(강성욱) 2016.10.18 4664
1961 SQL Server CPU 사용률이 높은 프로세서 및 쿼리 찾기 jevida(강성욱) 2016.10.18 7250
1960 Collation 변경 jevida(강성욱) 2016.10.18 4636
1959 인덱스 리빌드 동작 (Gather Streams from SORT) jevida(강성욱) 2016.10.18 3503
1958 최소한의 다운타임으로 데이터베이스 이동하기 jevida(강성욱) 2016.10.18 3169
1957 백업 LSN 이해하기 jevida(강성욱) 2016.10.18 3470
1956 암호화 오버헤드 (작성자의 주관적인 자료임) jevida(강성욱) 2016.10.18 2872
1955 데이터베이스 연결 정보 수집 jevida(강성욱) 2016.10.18 3211
1954 FileStream Garbage Collection jevida(강성욱) 2016.10.18 3475
1953 프로시저 캐시에서 중복 쿼리 계획 확인 jevida(강성욱) 2016.10.18 3709
1952 Sp_reset_connection jevida(강성욱) 2016.10.18 3582
1951 성능분석 17탄 – SQLServer 블록킹 / 네트워크 관련 성능 카운터 jevida(강성욱) 2016.10.15 3768
1950 성능분석 16탄 – 메모리 / CPU 관련 성능 카운터 jevida(강성욱) 2016.10.15 5666
» 성능분석 15탄 – I/O 관련 성능 카운터 jevida(강성욱) 2016.10.15 4064
1948 성능분석 14탄 – SQL Server 사용 성능 카운터 jevida(강성욱) 2016.10.15 4033
1947 성능분석 13탄 – 누락된 인덱스(missing index) jevida(강성욱) 2016.10.15 2411





XE Login