데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

성능분석 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
1951 성능분석 17탄 – SQLServer 블록킹 / 네트워크 관련 성능 카운터 jevida(강성욱) 2016.10.15 3721
1950 성능분석 16탄 – 메모리 / CPU 관련 성능 카운터 jevida(강성욱) 2016.10.15 5134
» 성능분석 15탄 – I/O 관련 성능 카운터 jevida(강성욱) 2016.10.15 4006
1948 성능분석 14탄 – SQL Server 사용 성능 카운터 jevida(강성욱) 2016.10.15 3955
1947 성능분석 13탄 – 누락된 인덱스(missing index) jevida(강성욱) 2016.10.15 2347
1946 성능분석 12탄 – 문제 쿼리 식별 jevida(강성욱) 2016.10.15 2125
1945 성능분석 11탄 – 실행 계획 분석 jevida(강성욱) 2016.10.15 4166
1944 성능분석 10탄 – 쿼리 실행 대기 시간 분석(xevent) jevida(강성욱) 2016.10.15 1909
1943 성능분석 9탄 – 쿼리 실행 분석 jevida(강성욱) 2016.10.15 3947
1942 성능분석 8탄 – IO 통계 (DISK 활동 분석) jevida(강성욱) 2016.10.15 1462
1941 성능분석 7탄 – 프로파일러 대기 유형 및 PREEMPTIVE_OS_WRITEFILEGATHER jevida(강성욱) 2016.10.15 1603
1940 성능분석 6탄 – CPU 경합 및 동시성 관련 대기 유형 jevida(강성욱) 2016.10.15 1884
1939 성능분석 5탄 – 메모리 및 네트워크 관련 대기 유형 jevida(강성욱) 2016.10.15 1938
1938 성능분석 4탄 – 디스크 및 IO 관련 대기 유형 jevida(강성욱) 2016.10.15 2077
1937 성능분석 3탄 – 집계 대기 통계 jevida(강성욱) 2016.10.15 1917
1936 성능분석 2탄 – 실행 요청을 기다리는 작업 확인 및 분석 (병렬 처리 대기 확인) jevida(강성욱) 2016.10.15 1354
1935 성능분석 1탄 – 실행 요청을 기다리는 작업 확인 및 분석 jevida(강성욱) 2016.10.15 1990
1934 확장이벤트를 사용하여 데드락 정보 확인 jevida(강성욱) 2016.10.15 1549
1933 확장 이벤트를 사용한 CPU 고부하 쿼리 추적 [1] jevida(강성욱) 2016.10.15 2116
1932 데이터에 대한 이해와 spill in tempdb jevida(강성욱) 2016.10.13 1764





XE Login