Ⅰ. 데이터베이스 튜닝의 개념과 목적
가. 데이터베이스 튜닝의 개념
데이터 베이스 응용 프로그램, 데이터베이스, 운영체제를 조정해서 한정된 자원에서 최적의 성능을 이끌어내기 위한 작업
나. 데이터베이스 튜닝의 목적
목적 | 설명 |
처리 능력 향상 | 시간별 트랜잭션 처리량 증가 |
처리 시간 단축 | 작업완료 소요 시간 단축 |
응답 시간 단축 | 사용자 요청부터 시스템 응답까지 시간 단축 |
로드 시간 단축 | 데이터베이스 로드 시간 단축 |
Ⅱ. 데이터베이스 설계 단계 튜닝 기법
가. 데이터베이스 튜닝 단계
1단계 DB 설계 튜닝 (모델링 관점) - 반정규화 - 분산 파일 배치 |
2단계 DBMS 튜닝 (환경 관점) - Buffer 크기 - Cache 크기 |
3단계 SQL 튜닝 (APP 관점 - Hash - Join |
나. 설계 단계 튜닝 기법 상세 설명
구분 | 기법 | 설명 |
데이터베이스 | - 실체뷰, 스냅샷 - 반정규화 |
- 분산 데이터베이스 원격 접근 성능저하 극복 |
테이블 | - 정규화/반정규화 - 파티셔닝 |
- 대용량 단일 테이블 분할 - 파일 분산 배치 |
인덱스 | - B트리, 비트맵, 해싱, 클러스터링 | - 테이블 접근 유형에 따른 Full scan, Index scan |
키 | - 식별자 지정 - 키 설정 |
- 데이터 검색, 수정 및 조인 성능향상 |
데이터 타입 | - 적절한 데이터 타입 선정 | - 조인 데이터 타입 동일 - Where 비교 타입 일치 |
Ⅲ. 힌트(Hint)의 유형
구분 | 힌트 | 설명 |
최적화 접근 | ALL_ROWS | - 전체 리소스를 최소화하는 비용 기반 실행 |
FIRST_ROWS | - 첫 번째 행을 가장 빨리 반환하는 접근 방법으로 실행 | |
접근 방법 | FULL | - 지정 테이블에 대한 전체 스캔 실행 |
ROWID | - 지정 테이블에 대해 rowid 이용 실행 | |
HASH | - 지정 테이블에 대해 해시 스캔 수행 | |
INDEX | - 지정 테이블에 대해 인덱스 이용 실행 | |
조인 순서 | ORDERED | - FROM 절에 기술한 테이블 순서대로 실행 |
STAR | - STAR QUERY 방식으로 실행, 최소 3개 이상 테이블 | |
조인 방법 | USE_MERGE | - 각 테이블 정렬 후 순서대로 비교 SortMerge Join |
USE_HASH | - 기준 테이블 이용 다른 테이블 Hash Join | |
병행 수행 | PARALLEL | - 병렬 처리 활용하여 실행 |
부가 힌트 | CACHE | - 최근 이용 데이터 캐시 보관하여 디스크 I/O 감소 |
- 사용자가 힌트를 활용해 직접 최적의 실행 경로를 작성해 성능 향상
Ⅳ. 데이터베이스 성능 개선을 위한 전략
Server 튜닝 - 투자 비용 과다 - 비용 대비 효과 미비 |
Network 튜닝 - 투자 비용 필요 - 튜닝 한계 존재 |
System 튜닝 - 초기 설계 단계부터 검터 - HW, OS 종속적 - DBA 전문 지식 필요 |
SQL 튜닝 - 투비 대비 고효율 - DB 성능 극대화 가능 - 튜닝 전문 지식 요구 |
- 목표 성능과 가용 자산을 고려해 투자 대비 고효율의 튜닝 전략 수립 필요