I. DB성능 최적화, 데이터베이스 튜닝 (DB Tuning) 개요
가. 데이터베이스 튜닝의 필요성
- 일반적으로 시스템 성능 저하 문제는 잘못된 APP 및 DB 설계에 의해 발생하며, 데이터베이스 튜닝을 통해 성능 저하 최소화 가능
나. 데이터베이스 튜닝의 개념
- 데이터베이스 응용, 데이터베이스 자체, 운영체제의 조정 등을 통하여 최적의 자원으로 최적의 성능(응답속도)을 얻을 수 있도록 개선하는 작업
II. 데이터베이스 튜닝의 3단계
가. 데이터베이스 튜닝의 3단계
튜닝 단계(영역) | 튜닝 방안 | 튜닝 사례 |
---|---|---|
1단계 DB 설계 튜닝 (모델링 관점) | 반정규화 분산파일배치 | |
2단계 DBMS 튜닝 (환경 관점) |
| Buffer 크기 Cache 크기 |
3단계 SQL 튜닝 (APP 관점) | 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 전문가 가이드”
View Comments (1)
정말 좋은 자료 입니다. 잘 보고 갑니다.