데이터베이스 문제 해결 방법
해결 순서
- 1단계 모니터링 자료수집 ⇒ 2단계 분석진단 ⇒ 3단계 튜닝 ⇒ 4단계 평가
데이터베이스 성능 튜닝의 3대 핵심 요소
application tuning 관점
(0. 데이터 모델 및 DB 설계)
1. 라이브러리 캐시 최적화 : 무거운 파싱과정을 거쳐 {*}캐시에 적재된 SQL 실행계획의 재사용성률 증가{*}
2. 데이터베이스 CALL 최소화
3. I/O 효율화 및 버퍼캐시 최적화 : 인덱스와 조인 원리, 옵티마이저 원리를 기반으로 한 sql 튜닝 포함
{*}I/O 최소화{*} 하고, 장기간 버퍼캐시에 적재된 {*}데이터 블록의 재사용률 증가{*}
구조와 튜닝이 성능에 미치는 영향도
Fig. 영역별 데이터베이스 성능에 미치는 영향도
(출처 : 오라클 성능 고도화 원리와 해법 I 중에서)
잘못 설계된 모델이 시스템에 미치는 영향
1. 비효율적인 액세스 유형 야기
2. 이로 발생된 SQL 성능 문제 해결을 위해 과도한 반정규화 실시
3. 궁극적으로 데이터의 일관성과 품질 저하 = 기존 데이터에 대한 신뢰성 저하 및 중복 데이터 증가
1. 데이터 모델 및 DB 설계
- 업무가 반영된 정규화된 데이터 모델이 바탕
- DBMS의 물리적 특성과 성능을 고려한 설계 변경
- DBMS 요소에 대한 설계
- 논리적 모델 : 데이터의 업무적 특성만을 반영한 설계
DBMS의 물리적 특성 배제 - 물리적 모델 : DBMS의 물리적 특성과 성능 고려한 설계 변경
ex) 반정규화, 집계성 테이블 설계, 테이블과 컬럼 정의, PK/FK 정의 등 - DB 설계 : 파티션 설계, 클러스터 및 IOT 구성, 기초 인덱스 설계, 뷰 설계, 시퀀스 설계 등
2. 애플리케이션 성능
- lock 경합, parsing 부하, database call 발생량 최소화
- 인덱스 설계 조정 및 SQL 변경 : I/O 효율 향상
3. 데이터베이스 튜닝
- init parameter 설정, SGA/PGA 메모리 구성
- redo 파일 구성
- tablespace & datafile 구성 등에 관한 전략 조정
4. 시스템 성능
- OS level에서 CPU와 메모리 구성, I/O subsystem 구성(파일시스템, 디스크 스트라이핑 등)
- 네트워크 설정 같은 하드웨어적 튜닝
참고 문서