본문 바로가기
DBA

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

by 엘리후 2024. 3. 5.

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 Point Check Point 수행주기 조절, Commit 주기 조정
Thread/Reuse Middleware 기능과 연동
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 전문가 가이드”

'DBA' 카테고리의 다른 글

[SQLD] 1-2 데이터 모델링과 성능  (0) 2024.03.11
(DB실무) Part3-데이터 모델과 성능  (0) 2024.03.06
[SQL] Query Tuning - Partition  (1) 2024.03.04
[MySQL] InnoDB - Redo Log  (5) 2024.03.04
[SQL] Query Tuning - Partition  (0) 2024.03.04

댓글