데이터베이스 튜닝 (DB Tuning)

I. DB성능 최적화, 데이터베이스 튜닝 (DB Tuning) 개요

가. 데이터베이스 튜닝의 필요성

  • 일반적으로 시스템 성능 저하 문제는 잘못된 APP 및 DB 설계에 의해 발생하며, 데이터베이스 튜닝을 통해 성능 저하 최소화 가능 

나. 데이터베이스 튜닝의 개념

  • 데이터베이스 응용, 데이터베이스 자체, 운영체제의 조정 등을 통하여 최적의 자원으로 최적의 성능(응답속도)을 얻을 수 있도록 개선하는 작업

 

II. 데이터베이스 튜닝의 3단계

가. 데이터베이스 튜닝의 3단계

튜닝 단계(영역)튜닝 방안튜닝 사례
1단계
DB 설계 튜닝
(모델링 관점)
  • 데이터베이스 설계 단계에서 성능 고려하여 설계
  • 데이터 모델링, 인덱스 설계
  • 데이터파일, 테이블 스페이스 설계
  • 데이터베이스 용량 산정
반정규화
분산파일배치
2단계
DBMS 튜닝
(환경 관점)
  • 성능을 고려하여 메모리나 블록 크기 지정
  • CPU, 메모리 I/O에 관한 관점
Buffer 크기
Cache 크기
3단계
SQL 튜닝
(APP 관점)
  • SQL 작성 시 성능 고려
  • Join, Indexing, SQL Execution Plan
Hash / Join

나. 데이터베이스 튜닝 영역 별 세부 기법

튜닝 영역기법기법 설명
DB 설계
튜닝 영역
테이블 분할 및 통합파티션 기능, 테이블 수평/수직 분할
식별자 지정/Key 설정본질/인조 식별자 정의, 클러스터링
효율적 인덱스 설정인덱스 분포도 고려 10~15%(손익 분기점)
정규화/반정규화테이블, 컬럼, 관계 정규화/반정규화
적절한 데이터 타입 선정조인 시 연결되는 데이터 타입 일치
데이터 모델링슈퍼/서브 타입, PK, 파티셔닝, 데이터 통합
DBMS
튜닝 영역
I/O 최소화실제 필요한 데이터만 Read, Query off-loading
Buffer Pool 튜닝지역성 관점 데이터 관리, Keep Buffer Cache
Commit/Check PointCheck Point 수행주기 조절, Commit 주기 조정
Thread/ReuseMiddleware 기능과 연동
SQL
튜닝 영역
Undo Segment 설정Undo 영역 크기 조정
옵티마이저RBO/CBO 이해, 통계정보 최신화
힌트 사용지원되는 힌트 기반 실행계획 유도
부분범위 처리일부만 Access, 옵티마이저 정보 제공
인덱스 활용인덱스 기반 조회 속도 향상, Sort 연산 대체
조인 방식 / 순서실행계획(Plan) 확인 후 조정
동적 SQL 지양파싱(Parsing) 부하 감소위한 Static SQL 사용
다중 처리한 번의 DBMS 호출로 여러 건 동시 처리
병렬 처리하나의 SQL을 여러 개의 CPU가 분할 처리
SORT 튜닝 수행인덱스 기반 MIN, MAX 구하기, TOP-N 쿼리
  • 튜닝의 순서인 DB 설계 → DBMS → SQL 튜닝 순으로 효율성이 줄어듦에 따라 우선 처리 필요
  • SW 처리가 불가능 하거나 효율적이지 않는 경우 HW 방식의 시스템 데이터베이스 튜닝 필요

 

III. 시스템 데이터베이스 튜닝 기법

튜닝 기법기법 설명
CPU 튜닝Peak Time 60% 이하 유지, CPU 증설, 과다 점유 검색 및 해결
메모리 튜닝메모리 최적화, 버퍼 크기 조정
스토리지 튜닝RAID 레벨 조정, SSD 도입, 스토리지 스티어링
I/O 튜닝I/O 분산 위한 파일 재배치, RAID 활용
네트워크 튜닝로드밸런싱, 대역폭 확대
  • HW 방식의 Scale-Up, Scale-Out을 통해 SW의 데이터베이스 튜닝의 한계 이상 튜닝 가능

[참고]

  • 한국데이터산업진흥원, “SQL 전문가 가이드”
  • 한국데이터산업진흥원, “DAP 전문가 가이드”
One Comment

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^