12. 데이터베이스 성능 고도화 정석 해법

  • 기반 분석 방법론을 사용하든 대기 이벤트 기반 분석 방법론을 사용하든 성능 진단과 분석 과정을 통해 여러 가지 튜닝 방안들이 제시될 수 있지만, 실제 튜닝 업무를 수행하는 성능 관리자들이 공통으로 느끼는 것은, 대부분 데이터베이스 성능 문제가 애플리케이션 튜닝으로 귀결된다.

  • 데이터베이스 성능 튜닝의 3대 핵심요소
  • 라이브러리 캐시 최적화
  • 데이터베이스 Call 최소화
  • I/O 효율화 및 버퍼캐시 최적화

  • 고성능 데이터베이스를 구축하는데 있어 더 근원적인 요소는 데이터 모델 및 DB 설계에 있다
  • 데이터 모델 및 DB 설계, 그리고 세가지 튜닝 영역이 데이터베이스 성능에 미치는 영향도
  • 데이터 모델 및 DB 설계 : 데이터 모델과 DB 설계의 개념은 보는 시각에 따라 다를 수 있는데, 여기서는 업무적 특성을 반영한 정규화된 데이터 모델을 바탕으로, DBMS의 물리적 특성과 성능을 고려한 설계 변경, 그리고 DBMS요소에 대한 설계를 실시하는 것을 말한다.

- 논리 데이터 모델 : DBMS의 물리적 특성은 배제하고 데이터의 업무적 특성만을 반영한 논리설계(엔티티, 속성, 릴레이션십 정의). 개념모델과 (상세)논리모델로 구분하기도 함.
- 물리 데이터 모델 : DBMS의 물리적 특성과 성능을 고려한 설계 변경(예를 들어, 엔티티 통합/분할, 인조식별자 정의, 이력관리, 반 정규화, 집계 테이블 설계 등), 테이블 정의, 컬럼 정의, PK/FK 정의 등
- DB 설계 : 파티션 설계, 클러스터 및 IOT구성, 기초 인덱스 설계, 뷰 설계, 시퀀스 설계 등

  • 애플리케이션 튜닝 : Lock 경합, 파싱 부하, 데이터베이스 Call 발생량을 최소화하고, 인덱스 설계 조정 및 SQL 변경을 통해 I/O 효율을 높이는 등의 튜닝 요소를 말한다.
  • 데이터베이스 튜닝 : 초기화 파라미터 설정, SGA/PGA 메모리 구성, Redo 파일 구성, 테이블스페이스 및 데이터파일 구성 등에 관한 전략을 조정하는 것을 말한다.
  • 시스템 튜닝 : OS 레벨에서의 CPU와 메모리 구성, I/O 서브시스템 구성(파일시스템, 디스크 스트라이핑 등), 네트워크 설정 같은 하드웨어적인 튜닝을 말한다.
  • 데이터베이스 성능을 좌우하는 열쇠는, 고품질 데이터 모델과 효과적으로 구현된 애플리케이션에 있다.
  • 잘못된 데이터 모델을 비효율적인 액세스 유형을 야기한다. 이 때문에 생기는 SQL 성능 문제를 해결하려고 과도한(또는 무규칙적인) 반정규화를 실시하게 되고, 이는 궁극적으로 데이터의 일관성과 품질 저하로 연결된다.
  • 이는 다시 기존 데이터에 대한 신뢰성을 떨어뜨려 새로운 데이터 요건으로 표출되고, 중복 데이터를 계속 양산하는 결과를 낳는다. 이런 악순환의 고리 때문에 데이터 모델 및 DB 설계가 고성능 데이터베이스 구축을 위한 핵심적인 요소로 파악되어야 한다.
  • 애플리케이션에서 근본적으로 발생하는 일량을 최소화해야만 한다.

  • p.239 그림 3-18 참조
  • 앞서 제시한 3가지 주요 튜닝 포인트를 각 요소 별로 표시한 것.
  • 4장부터 이 세 가지 주제를 놓고 본격적으로 튜닝 원리를 설명한다.

문서에 대하여