- HOME
- [종료]구루비 DB 스터디
- 2012년 하반기 - 오라클 성능 트러블슈팅의 기초 스터디
- ch1. 데이터베이스 성능 분석 및 튜닝
Ch1. 데이터베이스 성능 분석 및 튜닝
DB 성능 분석
- DB 성능 분석을 수행하다 보면 한 두 가지 핵심 원인으로 인해서 여러 가지 성능 저하 현상이 발생한다.
- 보통의 경우 성능 저하는 한 두 가지 핵심 원인 때문에 발생하며 나머지 요소는 핵심 원인에 따라오는 주변 현상일 뿐이다.
- 주변 현상에 초점을 맞추어서 튜닝을 진행하면 근본 원인을 해결하지 못하므로 문제 해결에 도움을 주지 못한다.
- 현상
- 대기 이벤트에 버퍼 캐시 관련 대기 이벤트가 높은 수치를 보이며 전체적인 DB 성능이 저하되고 있다.
- 다른 문제가 될 만한 대기 이벤트는 모니터링되지 않고 있다.
- 버퍼 캐시 관련 대기 이벤트의 수치가 높은 것은 현상일 뿐이다.
- 이 현상을 유발시킨 핵심 원인을 찾아야 하며, 이 경우 눈에 쉽게 띄지 않는 다른 항목의 수치를 점검하여 원인을 파악해야 한다.
- 필요 능력
- 발생한 현상의 인과 관계를 파악하는 능력
- 오라클의 각 항목들 사이의 연관성 분석이 필요하며, 오라클 아키텍처를 이해하고 있어야 한다.
- 성능 분석에 필요한 데이터의 선별, 수집, 분석 능력
- 판단의 근거가 되는 데이터를 가급적 많이 수집해야 하며, 이를 정확하게 분석해야 한다.
- 10g 이전에는 동적 뷰와 딕셔너리, X$로 시작하는 고정 테이블을 검색하는 방법, STATSPACK 데이터, SQL 추적 파일을 생성하는 방법
- 10g 부터는 AWR 개념이 되입되어 보다 상세한 DB 모니터링 정보를 지속적으로 저장, 이를 활용하여 많은 측면의 성능 분석 데이터 접근이 가능.
AWR데이터 이용, 오라클 메타 데이터, 동적 뷰, 딕셔너리 검색, SQL 추적 파일 생성.
AWR의 개념 (Automatic Workload Repository)
- AWR 데이터는 스냅샷 수행에 의해 저장되거나 숨김 파라미터 설정 값에 의해 데이터로 저장.
- 8i 버전부터 제공한 STATSPACK 데이터와 유사(수집 범위 크게 확장)
- 모든 STATSPACK 데이터를 포함
- 데이터베이스 생성 후 오픈시 자동으로 수행.
- 메모리 모니터링(Memory Monitor-MMON, Memory Monitor Light-MMNL) 백그라운드 프로세스에 의해 데이터가 수집 (SYSAUX 테이블스페이스에 저장)
- 기본적으로 1시간 주기로 수행, 7일간 보관 (수집 및 보관주기 변경 가능)
- AWR에 의해 수집되는 데이터
- DB 대기 이벤트 및 통계 정보
- 시스템 통계 정보
- 데이터베이스 부하 정보
- SQL 수행 정보
- 활동 세션 정보
- WRH$_* 또는 WRM$_* 데이블에 저장되며, DBA_HIST_* 딕셔너리를 통해 조회.
- WRH에는 데이터베이스 대기 이벤트 정보 및 통계 정보가 저장
- AWR 데이터 수집 구간의 경합 현상 및 메모리, 세그먼트, 락, RAC 등 전반적인 오라클 자원 사용 현황을 파악할 수 있다.
- CPU, 디스크, 네트워크 등 DB가 설치된 시스템의 자원 이용 통계가 저장되므로 이를 DB 통계 및 부하정보와 연계하여 분석할 수 있다.
- 그룹화된 DB 사용 부하의 통계 수치가 기록
평균 자원 사용량을 보여주기 때문에 서로 다른 시간 구간의 자원 사용량을 비교하기가 편리.- DBA_HIST_SYSTEMETRIC_SUMMARY 딕셔너리를 조회해서 AWR 수집 구간 중 평균 버퍼 캐시 적중률을 파악
- DBA_HIST_TIME_MODEL 딕셔너리를 조회해서 백그라운드 프로세스 활동 시간을 파악.
- sql 수행 통계 정보 및 실행 계획을 저장.
- 10g부터 활동 세션 정보를 데이터로 저장하며 이를 ASH(Active Session History) 데이터라고 한다.
ASH를 이용하면 과거 세션에 대한 정보 파악이 가능.
AWR 데이터의 활용
DB 상태 파악
- 동적 뷰나 딕셔너리 정보를 통한 실시간 DB 상태 파악이 가능.
하지만, 시점 데이터를 따로 저장하지 않으면 특정 구간 사이의 DB 상태 파악 불가능. - AWR은 시점 데이터를 저장하고 있으므로 원하는 구간의 DB 상태 파악이 가능.
- AWR 관련 딕셔너리를 조회하거나 AWR DB 보고서를 생성.
- 다양한 측면의 DB 상태 파악 가능
- 구간별 비교 가능
- DBA_HIST_OSSTAT 딕셔너리를 조회한 값을 그래프로 표시
- CPU 사용량이 높은 화, 수요일 16~18시를 집중 모니터링 구간으로 정하여 분석 가능.
- AWR 데이터 구간 비교를 위해 베이스 라인 기능 제공
성능 문제 해결
- 해결을 위해서도 AWR 데이터를 사용.
- 기록된 운영 정보를 분석하여 문제 발생 지점을 파악할 수 있다.
- AWR보고서와 ASH 보고서를 생성하는 스크립트 제공.
성능 추세 분석
- 성능 변화 추세를 파악할 수 있다.
- 추세 분석이 필요한 이유
- 항목 간 상관 관계 입증
- 현재 문제 원인 파악
- 미래 예측
- 비교하려는 항목의 추세 곡선 비교 및 각 항목의 데이터 비교를 통해 항목 간 상관 관계 입증이 가능.
- 특정 어플리케이션이 사용하는 SQL의 응답 시간과 해당 SQL이 발생시키는 버퍼 캐시 I/O 연관 관계를 파악하기 위해 두 항목의 6개월 간 데이터 그래프
- SQL이 사용하는 테이블의 데이터 증가량과 버퍼캐시 I/O의 추세 곡선
- CPU사용량과 데이터 크기의 상관 관계를 파악하기 위한 추세 곡선
- 매월 데이터 증가량에 따른 CPU 차가 사용량을 계산한 뒤, 오차를 감안한 보정 계수를 적용하여
향후 CPU 사용량이 100%에 이르는 시기를 예측해 볼 수 있다. - 2009년 8월에 CPU 사용률이 100%에 이르는 것으로 예측.
- HOME
- [종료]구루비 DB 스터디
- 2012년 하반기 - 오라클 성능 트러블슈팅의 기초 스터디
- ch1. 데이터베이스 성능 분석 및 튜닝