Database Tuning (튜닝)


DB Optimizer(옵티마이저)

  • SQL를 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는 DBMS 내부의 핵심엔진이다.
  • 종류
  • 규칙 기반 옵티마이저, 비용 기반 옵티마이저
  • 과정
  • 사용자가 던진 쿼리 수행을 위해, 후보군이 될 만한 실행 계획을 찾는다.
  • 오브젝트 통계 및 시스템 통계 정보를 통해 각 실행 계획의 예상 비용으 산정한다.
  • 갈 실행 계획을 비교해서 최저 비용을 갖는 하나를 선택한다.

힌트(Hint)

  • 힌트란 SQL을 튜닝하기 위한 지시구문이다.
  • 옵티마이저가 최적의 계획으로 SQL문을 처리하지 못하는 경우에 개발자 직접 최적의 실행 계획을 제공하는 것이다.
  • 힌트는 SELECT 다음에 작성할 수 있으며, INDEX, PARALLEL 등 다양한 힌트절이 있다.

데이터베이스 튜닝과 방법

  • DB 튜닝은 데이터베이스 구조나 데이터베이스 자체, 운영체제 등을 조정하여 데이터베이스 시스템의 성능을 향상시키는 작업을 의미한다.
  • 튜닝은 DB 설계 튜닝 > DBMS 튜닝 > SQL 튜닝의 단뎨로 진행할 수 있다.
  • 1단계 : DB 설계 튜닝(모델링 관점)
  • 튜닝 방법
    • 데이터베이스 설계 단계에서 성능을 고려하여 설계
    • 데이터 모델링, 인덱스 설계
    • 데이터 파일, 테이블 스페이스 설계
    • 데이터베이스 용량 산정
  • 튜닝 사례
    • 반정규화 분사 파이배치
  • 2단계 : DBMS 튜닝(환경 관점)
  • 튜닝 방법
    • 성능을 고려하여 메모리나 블록 크기 지정
    • CPU, 메모리 I/O에 관한 관점
  • 튜닝 사례
    • Buffer 크기
    • Cache 크기
  • 3단계 : SQL 튜닝(APP 관점)
  • 튜닝 방법
    • SQL 작성 시 선능 고려
    • Join, Indexing, SQL Execution Plan
  • 튜닝 사례
    • Hash / Join