데이터베이스 튜닝
개념
데이터베이스 어플리케이션, 데이터베이스 자체, 운영체제 등의 조정을 통하여 데이터베이스 시스템의 성능을 향상시키는 작업
시스템 성능 저하
일반적으로 시스템 성능 저하 문제는 잘못된 APP 및 DB 설계에 의해 발생한다.
DB 튜닝은 이러한 성능 저하를 최소화한다.
목적
- 갈수록 복잡화, 대량화되는 시스템을 그대로 유지하면서 DB 시스템을 최적화한다.
- 어플리케이션이 높은 작업 처리량과 짧은 응답시간을 갖도록 한다.
- DB를 활용하는 시스템을 안정시키고, 사용자의 만족과 관리자의 관리 능력을 향상시킨다.
데이터베이스 튜닝 방식
단계튜닝 영역튜닝 방안사례
1 | DB 설계 | ||
(모델링 관점) | - 데이터베이스 설계 단계에서 성능을 고려하여 설계한다. |
- 데이터 모델링, 인덱스 설계
- 데이터 파일, 테이블 스페이스 설계
- 데이터베이스 용량 산정 | - 반정규환
- 분산파일 배치 |
| 2 | DBMS
(환경 관점) | - 성능을 고려하여 메모리나 블록 크기 지정 - CPU, 메모리 I/O 관점 | - Buffer 크기
- Cache 크기 |
| 3 | SQL
(APP 관점) | - SQL 작성 시 성능 고려 - Join, Indexing, SQL Execution Plan | - Hash
- Join |
- 튜닝 단계 순서대로 효율성이 줄어들면 우선 처리가 필요하다.
- SW 처리가 불가능하거나 효율적이지 않는 경우 HW 방식의 시스템 데이터베이스 튜닝이 필요하다.
- Scale-up, Scale-out 방식을 통해 SW 데이터베이스 튜닝의 한계 이상으로 튜닝이 가능하다.
튜닝 영역별 세부 기별
1. DB 설계
- 테이블 분할 및 통합
- : 파티셔닝(테이블 수평/수직 분할)
- 식별자 지정, Key 설정
- : 본질/인조 식별자 정의, 클러스터링
- 효율적 인덱스 설정
- : 인덱스 분포도 고려 10~15%(손익 분기점)
- 정규화/반정규화
- : 테이블, 컬럼, 관계 정규화/반정규화
- 적절한 데이터 타입 선정
- : 조인시 연결되는 데이터 타입 일치
- 데이터 모델링
- : 슈퍼/서브 타입, PK, 파티셔닝, 데이터 통합
2. DBMS
- I/O 최소화
- : 실제 필요한 데이터만 Read, Query off-loading
- Buffer Pool 튜닝
- : 지역성 관점 데이터 관리, Keep Buffer Cache
- Commit/Check Point
- : Check Point 수행주기 조절, Commit 주기 조정
- Thread/Reuse
- : Middleware 긴,ㅇ과 연동
3. SQL
- Undo Segment 설정
- : Undo 영역 크기 조정
- Optimizer
- : RBO/CBO 이해, 통계 정보 최신화
- 힌트 사용
- : 지원되는 힌트 기반 실행계획 유도
- 부분범위 처리
- : 일부만 Access, 옵티마이저 정보 제공
- 인덱스 활용
- : 인덱스 기반 조회 속도 향상, Sort 연산 대체
- 조인 방식/순서
- :실행 계획(Plan) 확인 후 조정
- 동적 SQL 지양
- : 파싱 부하 감소를 위한 Static SQL 사용
- 다중 처리
- : 한 번의 DBMS 호출로 여러 건 동시 처리
- 병렬 처리
- : 하나의 SQL을 여러 개의 CPU가 분할 처리
- SORT 튜닝 수행
- : 인덱스 기반 MIN, MAX 구하기, TOP-N 쿼리
시스템 데이터베이스 튜닝 기법
- CPU 튜닝
- : Peak Time 60% 이하 유지, CPU 증설, 과다 점유 검색 및 해결
- 메모리 튜닝
- : 메모리 최적화, 버퍼 크기 조정
- 스토리지 튜닝
- : RAID 레벨 조정, SSD 도입, 스토리지 스티어링
- I/O 튜닝
- : I/O 분산 위한 파일 재배치, RAID 활용
- 네트워크 튜닝
- : 로드밸런싱, 대역폭 확대
'DBA' 카테고리의 다른 글
[DB] MySQL 성능 최적화(INDEX) (0) | 2024.03.03 |
---|---|
DB - 성능 개선을 위한 테이블 분할 (0) | 2024.03.02 |
PostgreSQL / PPAS 기본 아키텍처 (Engine) (0) | 2024.02.26 |
MySQL 인덱스(Index) 개인 스터디 실습 및 정리 (1) | 2024.02.26 |
MySQL Workbench의 VISUAL EXPLAIN으로 인덱스 동작 확인하기 (1) | 2024.02.26 |
댓글