windows 성능모니터를 이용한 sql server 성능 분석

52
Windows 성성성성성성 성성성 SQL Server 성성 성성 강강강 | SQL Server MVP

Upload: sung-wook-kang

Post on 18-Jan-2017

1.428 views

Category:

Software


10 download

TRANSCRIPT

Page 1: Windows 성능모니터를 이용한 SQL Server 성능 분석

Windows 성능모니터를 이용한SQL Server 성능 분석강성욱 | SQL Server MVP

Page 2: Windows 성능모니터를 이용한 SQL Server 성능 분석

2

발표자 소개강 성 욱

SQL 관련 블로그 운영 (http://sqlmvp.kr)

https://www.facebook.com/sqlmvp

[email protected]

Microsoft SQL Server MVP

ServicePointWindows, IIS, SQL Server 모니터링 솔루션

http://www.nwiz.co.kr( 데모 : http://demo.nwiz.-

co.kr)

SQL Server 스터디 그룹 (http://sqltag.org)

SQL Server 커뮤니티 (http://sqler.com)

Page 3: Windows 성능모니터를 이용한 SQL Server 성능 분석

3

AGENDA

성능 베이스 라인의 필요성 윈도우 성능 모니터 설정 하기 SQL Server 프로파일러와 교차분석 설정주요 성능 카운터

Page 4: Windows 성능모니터를 이용한 SQL Server 성능 분석

4

성능 베이스라인 데이터의 필요성성능 베이스라인 데이터 ?

일반적인 운영환경에서 시스템의 성능을 수집하여 데이터베이스 및 파일화를 통해 저장한 데이터저장된 데이터를 분석하여 시스템의 최적화된 데이터를 산출

베이스라인 데이터는 왜 필요한가 ?현재의 성능 값이 일반적인 상황과 비교했을때 다른 점을 비교하기 위해 필요미래에 대한 계획을 수립하기 위해서 필요

현재 아이들링 RPM 은 정상인가요 ?

Page 5: Windows 성능모니터를 이용한 SQL Server 성능 분석

5

성능 베이스라인 데이터의 필요성 성능 베이스라인은 case by case

시스템 또는 비즈니스 따라 하드웨어 특성 및 리소스가 다르다 .따라서 임계치가 다르기 때문에 평소 베이스라인이 꼭 필요하다 .

디젤 자동차 계기판 가솔린 자동차 계기판

현재 RPM 이 5000 으로 동일 할 경우 어떻게 판단해야하는가 ?

Page 6: Windows 성능모니터를 이용한 SQL Server 성능 분석

6

DBA 는 운영되는 시스템 성격에 따라 모니터링 데이터를 저장하여 베이스라인 데이터로 활용성능 문제는 다양한 원인으로 발생할 수 있기 때문에 수많은 상황을 분석하기 위해서는 신뢰하는 다양한 베이스라인 데이터가 필요

성능 베이스라인 데이터의 필요성

Page 7: Windows 성능모니터를 이용한 SQL Server 성능 분석

7

윈도우 성능 모니터Perfmon(Performance Monitor) 은 Windows 에서 기본적으로 제공하는 성능 수집 도구CPU, Memory, Disk, Network 를 포함한 다양한 성능 데이터 수집Add-in 으로 카운터 추가 가능 ( 예 , SQL Server 설치시 SQL 관련 성능 카운터 추가 )

실시간 성능 모니터링 가능파일이나 DB 로 성능 데이터를 저장하여 분석 가능프로파일러와 연동윈도우 8 은 29,000 이상의 표준 카운터 제공

Page 8: Windows 성능모니터를 이용한 SQL Server 성능 분석

8

윈도우 성능 모니터성능카운터는 카테고리 / 인스턴스 / 카운터 계층으로 관리

• 카테고리 : CPU, 디스크 응용프로그램 등 관심 영역을 나타냄 .

• 인스턴스 : 기본적으로 한 개 이상의 인스턴스가 존재하며 디스크 드라이브 경우 C, D, E 처럼 다수의 인스턴스가 존재 .

• 카운터 : 실제 성능정보는 개별 카운터에 기록됨 .• 마이크로소프트는 C 함수 , C# 래퍼 클래스

세트로 성능 카운터에 대한 액세스를 제공 .

Page 9: Windows 성능모니터를 이용한 SQL Server 성능 분석

9

Perfmon 사용법[ 시작 ] – [ 실행 ] – [perfmon]상단에는 각종 설정 버튼 , 하단에는 그래프의 수치 및 항목 표시

Page 10: Windows 성능모니터를 이용한 SQL Server 성능 분석

10

Perfmon 사용법Perfmon 은 3 가지 형태의 UI 제공상단의 그래프 형식 변경 아이콘을 사용하여 UI 변경

선형 막대형 보고서

Page 11: Windows 성능모니터를 이용한 SQL Server 성능 분석

11

Perfmon 사용법카운터 추가는 상단의 [ 추가 ] 아이콘을 이용카운터 특성에 따라 적절한 인스턴스를 추가하여 사용인스턴스가 많은 항목은 특히 주의해서 사용 ( 시스템 오버헤드 발생 )

Page 12: Windows 성능모니터를 이용한 SQL Server 성능 분석

12

Perfmon 사용법각 카운터 별로 수치가 다르기 때문에 배율 (Scale) 을 조절하여 사용

Page 13: Windows 성능모니터를 이용한 SQL Server 성능 분석

13

Perfmon 사용법특정 카운터 정보를 강조해서 표시할 경우 [ 하이라이트 ] 아이콘 사용자주 사용하는 카운터는 파일로 저장해서 사용 (htm, xml 파일로 저장됨 )

Page 14: Windows 성능모니터를 이용한 SQL Server 성능 분석

14

Perfmon 성능 데이터 수집 (1)

데이터 수집기 집합을 설정하여 주기적으로 성능 데이터를 수집수집된 데이터는 txt, blg 등 파일 저장 가능수집된 데이터는 ODBC 를 통해 데이터베이스에 저장 가능

Page 15: Windows 성능모니터를 이용한 SQL Server 성능 분석

15

Perfmon 성능 데이터 수집 (1)

수집할 데이터 로그를 선택성능카운터에 대한 정보를 수집하기 위해 성능 카운터 선택너무 많은 성능 카운터 추가 및 짧은 샘플간격은 시스템 오버헤드를 발생 ( 중요 )

Page 16: Windows 성능모니터를 이용한 SQL Server 성능 분석

16

Perfmon 성능 데이터 수집 (1)

수집된 데이터를 저장할 경로를 선택수집기에서 사용할 계정 선택 ( 기본값 선택 )

Page 17: Windows 성능모니터를 이용한 SQL Server 성능 분석

17

Perfmon 성능 데이터 수집 (1)

생성이 완료되면 수집기 집합에 작업이 추가된 것을 확인수집 형태의 기본값은 이진 형식이며 blg 확장자로 파일 저장

Page 18: Windows 성능모니터를 이용한 SQL Server 성능 분석

18

Perfmon 성능 데이터 수집 (1)

저장될 파일명은 사용자가 지정 가능설정된 내용은 하단의 [ 파일 이름 예 ] 에서 확인

구분자 [\] 를 사용하여 파일 이름 구성

Page 19: Windows 성능모니터를 이용한 SQL Server 성능 분석

19

Perfmon 성능 데이터 수집 (1)

하나의 폴더에 성능 데이터 파일이 위치 -> 하위 디렉터리 이름 형식 삭제

Page 20: Windows 성능모니터를 이용한 SQL Server 성능 분석

20

Perfmon 성능 데이터 수집 (1)

일정 등록으로 시스템 재시작 경우에도 자동으로 시작 되도록 설정

Page 21: Windows 성능모니터를 이용한 SQL Server 성능 분석

21

Perfmon 성능 데이터 수집 (1)

수집 자동화의 중지 조건 설정특정 시간 또는 수집 파일 크기를 설정하여 수집 중단 가능아래 예시의 경우 매일 1 개의 데이터 수집 파일 생성

Page 22: Windows 성능모니터를 이용한 SQL Server 성능 분석

22

Perfmon 성능 데이터 수집 (1)

성능 데이터 수집기 시작 / 중지 아이콘으로 수집 시작설정된 경로에서 성능 데이터 파일 생성되어 데이터 수집 확인

Page 23: Windows 성능모니터를 이용한 SQL Server 성능 분석

23

Perfmon 성능 데이터 수집 (1)

Report 메뉴에서 수집된 성능 데이터 확인 가능성능 데이터 수집 활동이 중지되어 있을때만 데이터 확인 가능

데이터 수집 실행 데이터 수집 중지

Page 24: Windows 성능모니터를 이용한 SQL Server 성능 분석

24

Perfmon 데이터와 Profiler 데이터 교차 분석프로파일러에서 수집한 trc 파일과 수집한 성능 데이터 가져오기 선택성능 카운터 목록에서 상관 관계를 지정할 카운터를 선택

Page 25: Windows 성능모니터를 이용한 SQL Server 성능 분석

25

Perfmon 데이터와 Profiler 데이터 교차 분석추적 데이터와 성능 데이터를 한번에 비교 분석 .그래프의 특정 위치를 클릭하면 프로파일러도 동일한 시간으로 이동

Page 26: Windows 성능모니터를 이용한 SQL Server 성능 분석

26

Perfmon 성능 데이터 수집 (2)

SQL Server 에 성능 데이터를 저장하기위해 ODBC 원본 생성

Page 27: Windows 성능모니터를 이용한 SQL Server 성능 분석

27

Perfmon 성능 데이터 수집 (2)

SQL Server 에 성능 데이터를 저장하기위해 ODBC 원본을 생성

Page 28: Windows 성능모니터를 이용한 SQL Server 성능 분석

28

Perfmon 성능 데이터 수집 (2)

SQL Server 에 성능 데이터를 저장하기위해 ODBC 원본을 생성

Page 29: Windows 성능모니터를 이용한 SQL Server 성능 분석

29

Perfmon 성능 데이터 수집 (2)

SQL Server 에 성능 데이터를 저장하기위해 ODBC 원본을 생성

Page 30: Windows 성능모니터를 이용한 SQL Server 성능 분석

30

Perfmon 성능 데이터 수집 (2)

성능 정보를 저장하기 위한 테이블이 자동으로 생성되어 데이터 저장CounterDataGUID : 데이터 세트에 대한 GUID, DisplayTOID 테이블과 조인키로 사용CounterID : 카운터 식별 . CouterDetails 테이블과 조인키로 사용RecordIndex : 특정 카운터 식별자 및 GUID 의 샘플 인덱스 . CouterDateTime : 시작된 시간 (UTC 사용 )CounterValue : 실제 성능 값 .

Page 31: Windows 성능모니터를 이용한 SQL Server 성능 분석

31

Perfmon 성능 데이터 수집 (2)

테이블을 조인하여 수집된 성능 데이터를 조회SELECT

MachineName ,CounterName ,InstanceName ,CounterValue ,CounterDateTime ,DisplayString

FROM dbo.CounterDetails cdtINNER JOIN dbo.CounterData cd

ON cdt.CounterID = cd.CounterIDINNER JOIN DisplayToID d

ON d.GUID = cd.GUIDWHERE MachineName = 'KANGSUNGWOOK-PC'AND ObjectName = 'Processor'AND cdt.CounterName = '% Processor Time'AND cdt.InstanceName = '_Total'ORDER BY CounterDateTime

Page 32: Windows 성능모니터를 이용한 SQL Server 성능 분석

32

Perfmon 성능 데이터 수집 (2)

다양한 도구를 이용하여 분석EXCEL

SSRS (Unplugged 5th 세미나 참고 )

전문 모니터링 툴

Page 33: Windows 성능모니터를 이용한 SQL Server 성능 분석

33

SQL Server 데이터 컬렉션다양한 데이터 집합을 수집하는 구성 요소 (SQL Server 에 기본 포함 )항상 실행 또는 사용자 정의에 따라 실행 가능수집된 데이터는 관계형 데이터베이스에 저장데이터 수집기를 사용하면 사용자 환경에 맞는 데이터 컬렉션 범위 조정 가능데이터 보존 기간을 설정하여 관리데이터 컬렉션에 대한 동적 튜닝을 지원하며 API 를 통해 확장 가능 .( 데이터 수집기 프로그래밍 참고 )다양한 시각화 보고서 제공

Page 34: Windows 성능모니터를 이용한 SQL Server 성능 분석

34

SQL Server 데이터 컬렉션다양한 시각화 보고서 제공

종류 설명

디스크 사용 요약 보고서SQL Server 인스턴스에 있는 모든 데이터베이스의 디스크 공간 정보 제공 데이터 및 로그파일에 대한 증가 추세 제공 ( 그래픽 , 숫자 ) 데이터베이스 시작 크기와 현재 크기를 MB 단위로 표시 인덱스 페이지 , 할당되지 않는 공간 등 정보 제공

쿼리 통계 기록 보고서쿼리 실행 통계 정보 제공 총 CPU 별 상위 쿼리 정보 제공 ( 그래프 , 쿼리 , 쿼리 비용 등 ) 물리적 읽기 , 논리적 쓰기 등 상세 쿼리 세부 정보 제공 쿼리 계획 제공 ( 그래픽 )

서버 작업 기록 보고서서버 및 SQL Server 인스턴스의 리소스 사용 및 서버 작업 데이터 제공 CPU, 메모리 , 디스크 I/O, 네트워크 사용량 제공 ( 추세 그래프 , 숫자 ) SQL Server 대기 작업 분석 데이터 제공 SQL Server 컴파일 , 리컴파일 , 세션 , 캐시 적중률 , tempdb 등 정보 제공

Page 35: Windows 성능모니터를 이용한 SQL Server 성능 분석

35

SQL Server 데이터 컬렉션데이터 수집기 아키텍처

• 데이터 수집기는 SQL Server 에이전트 및 SSIS 와 통합되어 사용• SSIS 는 개별 데이터 공급자에서 데이터 수집 패키지 실행에 사용• 클라이언트 : 데이터 수집기의 사용자 인터페이스• API : 사용자 인터페이스와 데이터 수집기간의 상호작용에 사용• 실행 : 데이터 컬렉션 및 저장소에 사용• 저장소 : 구성 정보 및 수집된 데잍를 포함하는 데이터베이스

Page 36: Windows 성능모니터를 이용한 SQL Server 성능 분석

36

SQL Server 데이터 컬렉션데이터 컬렉션 구성

Page 37: Windows 성능모니터를 이용한 SQL Server 성능 분석

37

SQL Server 데이터 컬렉션데이터 컬렉션 구성

로그인을 생성하여 데이터 수집기 역할에 매핑 관리 데이터 웨어하우스 구성

Page 38: Windows 성능모니터를 이용한 SQL Server 성능 분석

38

SQL Server 데이터 컬렉션데이터 컬렉션 구성

Page 39: Windows 성능모니터를 이용한 SQL Server 성능 분석

39

SQL Server 데이터 컬렉션데이터 컬렉션 구성

Page 40: Windows 성능모니터를 이용한 SQL Server 성능 분석

40

SQL Server 데이터 컬렉션데이터 컬렉션 구성

Page 41: Windows 성능모니터를 이용한 SQL Server 성능 분석

41

SQL Server 데이터 컬렉션보고서 보기

Page 42: Windows 성능모니터를 이용한 SQL Server 성능 분석

42

시스템 주요 성능 카운터임계값은 절대적인 수치가 아니며 시스템 다름 ( 슬라이드 값은 참고만 할것 )베이스 라인 데이터로 시스템에 최적화된 임계값을 산출 하는 것이 중요

Page 43: Windows 성능모니터를 이용한 SQL Server 성능 분석

43

시스템 주요 성능 카운터CPU 사용량

객체 카운터 임계값 설명Processor % Processor Time < 80 시스템에서 사용하는 전체 CPU 사용량을 백분율로 표시System Processor Queue Length < 코어수 * 2 프로세서 시간동안 대기하는 스레드 수 ( 실행되고 있는 스레드수 제외 )

System Context switches/sec < 6000 초당 발생하는 컨텍스트 스위치 수

Page 44: Windows 성능모니터를 이용한 SQL Server 성능 분석

44

시스템 주요 성능 카운터Memory 사용량

객체 카운터 임계값 설명

Memory

Available Bytes > 100MB 시스템에서 사용할 수 있는 실제 메모리Committed Bytes < 90% ( 물리

메모리 대비 )커밋된 가상 메모리 . 커밋 크기가 물리 메모리보다 크다면 페이징 발생 .

Page Faults/sec 초당 페이지 폴트 수 . 하드페이지 오류는 디스크 액세스로 인한 지연 발생 가능 .

Page Reads/sec 페이지 폴트를 해결하기 위해 디스크에서 읽은 비율Page Write/sec 메모리 공간을 비우기 위해 페이지를 디스크에 쓴 비율Pages/sec < 30 초당 페이지 파일을 사용한 수Pages Input/sec < 10 초당 페이징 파일을 사용한 수 . 읽기 연산 중에 메모리로 읽은 평균 페이지 수Pages Output/sec 실제 메모리 공간을 비우기 위해 디스크에 다시 쓴 페이지 비율

Page 45: Windows 성능모니터를 이용한 SQL Server 성능 분석

45

시스템 주요 성능 카운터Network 사용량

객체 카운터 임계값 설명Network Interface Bytes Received/sec 받은 받이트 수Network Interface Bytes Sent/sec 보낸 바이트 수Network Interface Bytes Total/sec Bytes Sent/sec + Bytes Total/sec

Network Interface Current Bandwidth 현재 대역폭을 초당 비트로 추정한 값Network Interface Output Queue Length < 2 출력 패킷의 큐 길이 . 값이 2 보다 크면 네트워크 병목 발생

Page 46: Windows 성능모니터를 이용한 SQL Server 성능 분석

46

시스템 주요 성능 카운터DISK 사용량

객체 카운터 임계값 설명

LogicalDisk, PhysicalDisk

% Disk Time 읽기 및 쓰기 요청을 처리하는데 사용한 시간의 백분율 (낮을 수록 좋음 )

% Idle Time 샘플 간격동안 디스크가 유휴 상태였던 시간의 백분율 (높을 수록 좋음 )

Avg. Disk Bytes/Read 읽기 평균 바이트 수Avg. Disk Bytes/Write 쓰기 평균 바이트 수Avg. Disk Queue Length 요청이 처리되지 못하고 디스크 큐에 쌓여있는 평균 수 (낮은 수록 좋음 )

Current Disk Queue Length 성능 데이터를 수집할 당시 디스크에서 기다리는 요청 수LogicalDisk Free Megabytes 디스크에 사용가능한 공간 (논리 디스크에 해당 )

Page 47: Windows 성능모니터를 이용한 SQL Server 성능 분석

47

SQL 주요 성능 카운터SQL Server 성능에 영향을 미치는 카운터

객체 카운터 임계값 설명

SQLServer:Access Methods

Page Splits/sec <20% ( 배치대비 ) 인덱스 페이지 오버플로우로 발생한 초당 페이지 분할 수Workfiles Created/sec < 20 초당 생성된 임시 파일 수 .

( 해시조인 및 해시 집계에 대한 임시 결과 저장 )

Worktable Created/sec < 20초당 생성된 임시 테이블 수 .( 스풀 , LOB 변수 , XML 변수 , 커서에 대한 임시 결과 저장 )

Full Scans/sec 초당 전체 검색 수

SQLServer:Buffer Manager

Page Lookups/sec < 100 ( 배치 대비 ) 버퍼풀에서 페이지를 찾기 위한 요청 수Buffer cache hit ratio 디스크에서 읽기 않고 버퍼풀에서 찾은 페이지 비율Checkpoint pages/sec 커밋되지 않은 페이지가 검사점에 의해 플러시된 페이지 수Lazy write/sec 버퍼 관리자의 지연기록기가 기록한 버퍼 수Page life expectancy > 300 페이지가 참조 없이 메모리에 머무르는 시간 (초 )

SQLServer:Databases

LogBytes Flushed/sec 플러시된 총 로그 바이트 수Log Growths 데이터베이스의 총 로그 증가 수

Page 48: Windows 성능모니터를 이용한 SQL Server 성능 분석

48

SQL 주요 성능 카운터SQL Server 성능에 영향을 미치는 카운터

객체 카운터 임계값 설명SQLServer:General Statis-tics User Connections 시스템에 연결된 사용자 수SQLServer:Latch Avg Latch Wait Time(ms) 평균 래치 대기 시간

SQLServer:Locks

Number of Deadlocks/sec < 1 교착 상태를 일으킨 잠금 요청 수Lock Wait/sec 즉시 처리 될 수 없어서 잠금을 기다리는 요청 수Lock Requests/sec < 1000 초당 잠금 요청 수Lock Timeouts/sec < 1 시간 초과된 잠금 요청 수 (NOWAIT 잠금에 대한 요청 포함 )

SQLServer:DatabasesLogBytes Flushed/sec 플러시된 총 로그 바이트 수Log Growths 데이터베이스의 총 로그 증가 수 (누적값 기록 )

Page 49: Windows 성능모니터를 이용한 SQL Server 성능 분석

49

SQL 주요 성능 카운터SQL Server 성능에 영향을 미치는 카운터

객체 카운터 임계값 설명

SQLServer:Memory Manager

Granted Workspace Mem-ory(KB)

실행 중인 프로세스에 부여된 총 메모리 . 해시 , 정렬 , 인덱스 생성에 사용

Maximum Workspace Memory(KB)

프로세스에 부여될 수 있는 최대 메모리 . 주로 해시 , 정렬 , 인덱스 생성에 사용

Target Server Memory (KB) SQL Server 가 사용할 수 있는 전체 메모리 양Total Server Memory (KB) < Target Server Memory SQL Server 가 사용중인 총 동적 메모리 양

SQLServer:SQL Statis-tics

Batch Requests/sec 수신된 SQL 요청 수SQL Compilations/sec < 10% ( 배치 대비 ) SQL 컴파일 횟수SQL Re-Compilation/sec < 10% (컴파일 대비 ) SQL 리컴파일 횟수

SQLServer:Wait Statis-tics

Log write waits 로그 버퍼 작성을 기다리는 프로세스 통계Network IO waits 네트워크 IO 대기와 관련된 통계

Page 50: Windows 성능모니터를 이용한 SQL Server 성능 분석

50

SQL 주요 성능 카운터SQL Server 성능에 영향을 미치는 카운터

객체 카운터 임계값 설명SQLServer:General Statistics

Login/secLogout/sec 초당 시작된 총 로그인 / 로그아웃 수

SQLServer:Transactions

Longest Transac-tion Running Time

트랜 잭션 중 가장 긴 실행 시간 (초 )

SQLServer:Cusor Manager by Type Active Cusors 활성 커서 수SQLServer:Access Methods

Table Lock Esca-lations/sec

테이블에 Lock 이 발생할 때 해당 테이블에 계속적으로 발생하는 초당 Lock 수

Page 51: Windows 성능모니터를 이용한 SQL Server 성능 분석

51

정리현재의 성능 값이 일반적인 상황과 비교했을때 다른 점을 비교하기 위해 베이스라인 데이터 필요하다 .성능 정보는 꾸준히 수집 보관한다 . ( 과거 기록 비교시 중요함 )성능 데이터는 필요한 정보만 수집한다 . ( 오버헤드 가능성 )성능 데이터의 임계값은 시스템마다 상대적이므로 베이스라인 데이터를 기초로 최적의 임계값을 찾는것이 중요하다 .시스템에 문제가 발생하였을때 특정 성능 데이터로만 찾는것은 힘들며 다양한 데이터를 교차분석하는 안목이 필요하다 .

Page 52: Windows 성능모니터를 이용한 SQL Server 성능 분석

52

감사합니다