12 데이터베이스 성능 고도화 정석 해법
절차
모니터링 및 자료 수집 -> 분석 및 진단 -> 튜닝 -> 평가
- 대부분 데이터베이스 성능 문제가 애플리케이션 튜닝으로 귀결됨.
- SQL을 한 번만 수행해도 같은 결과를 얻을 수 있는데
불필요하게 많은 SQL을 수행하거나, 파싱을 많이 일으키거나, 많은 데이터를 Fetch하거나,
많은 I/O를 일으키도록 구현하는 것이 성능 문제를 일으키는 원인의 99%.
- 데이터베이스 성능 튜닝의 3대 핵심 요소
(라이브러리 캐시 최적화, 데이터베이스 Call 최소화, I/O 효율화 및 버퍼캐시 최적화)
- 근원적인 요소는 데이터 모델 및 DB설계임.
I/O 효율화 및 버퍼캐시 최적화에는 인덱스와 조인 원리, 옵티마이저 원리를 기반으로 한 SQL 튜닝을 포함.
- 데이터 모델 및 DB설계:
업무적 특성을 반영한 정규화된 데이터 모델을 바탕으로,
DBMS의 물리적 특성과 성능을 고려한 설계 변경, 그리고 DBMS 요소에 대한 설계를 실시하는 것.- 논리 데이터 모델: DBMS의 물리적 특성을 배제하고 데이터의 업무적 특성만을 반영한 논리 설계.
- 물리 데이터 모델: DBMS의 물리적 특성과 성능을 고려한 설계변경, 테이블 정의, 컬럼 정의, PK/FK 정의 등.
- DB 설계: 파티션 설계, 클러스터 및 IOT 구성, 기초 인덱스 설계, 뷰 설계, 시퀀스 설계 등.
- 애플리케이션 튜닝: Lock 경합, 파잇 부하, 데이터베이스 Call 발생량을 최소화. 인덱스 설계 조정 및 SQL 변경을 통해 I/O 효율을 높이는 등의 튜닝.
- 데이터베이스 튜닝: 초기화 파라미터 설정, SGA/PGA 메모리 구성, Redo 파일 구성, 테이블스페이스 및 데이타파일 구성 등에 관헌 전략을 조정하는 것.
- 시스템 튜닝: OS 레벨에서의 CPU와 메모리 구성, I/O 서브시스템 구성, 네트워크 설정 같은 하드웨어적인 튜닝.
- 데이터베이스 성능을 좌우하는 열쇠는, 고품질 데이터 모델과 효과적으로 구현된 애플리케이션에 있음.
잘못된 모델은 비효율적인 액세스 유형을 야기함. 이 때문에 생기는 SQL 성능 문제를 해결하려고 과도환 반정규화를 실시하게 되고, 이로 데이터의 일관성과 품질 저하로 연결됨. 이는 다시 기존 데이터에 대한 신뢰성을 떨어뜨려 새로운 데이터 요건으로 표출되고, 중복 데이터를 계속 양산하는 결과를 가져옴. 이런 악순환의 고리 때문에 데이터 모델 및 DB 설계가 고성능 데이터베이스 구축을 위한 핵심적인 요소로 파악되어야 함. 애플리케이션에서 근본적으로 발생하는 일량을 최소화해야만 함.