2024. 8. 6. 18:06ㆍDBMS/PERFORMANCE
RDBMS(Relational Database Management System) 튜닝은 데이터베이스 성능을 최적화하기 위한 과정이다.
1. 쿼리 최적화
- 목적: 쿼리의 실행 속도를 높이고 시스템 자원 사용을 최소화.
- 방법:
- 불필요한 연산 제거: 쿼리에서 불필요한 계산이나 필터링을 제거하여 실행 시간을 단축.
- 적절한 데이터 타입 사용: 데이터 타입을 정확하게 지정하여 메모리 사용과 계산 효율성을 높임.
- 쿼리의 복잡성 감소: 복잡한 쿼리를 간단히 하거나 쿼리를 쪼개어 여러 단계로 나누어 처리.
2. 쿼리 분석
- 목적: 쿼리의 성능 병목을 찾고 개선점을 확인하기 위해 실행 계획을 분석.
- 방법:
- 실행 계획(Execution Plan) 분석:
- 실행 계획은 데이터베이스가 쿼리를 실행하는 방법을 설명하는 도구.
- EXPLAIN 또는 EXPLAIN PLAN 명령어를 사용하여 실행 계획을 확인하고, 테이블 스캔, 인덱스 스캔, 조인 순서 등을 분석.
- 높은 비용을 유발하는 연산이나 테이블 스캔을 식별하여 최적화 방안을 모색.
3. 인덱스 활용
- 목적: 데이터 검색 성능을 개선.
- 방법:
- 적절한 인덱스 설계:
- 자주 조회되는 컬럼에 인덱스를 설정하여 검색 속도를 향상.
- 복합 인덱스를 사용하여 여러 조건이 결합된 검색을 효율적으로 처리.
- 인덱스 남용 방지:
- 과도한 인덱스는 데이터 삽입, 업데이트, 삭제 시 성능 저하를 초래할 수 있으므로 필요한 인덱스만 유지.
- 인덱스는 추가 저장 공간을 차지하고, 데이터 변경 시마다 인덱스를 갱신해야 하므로, 비용과 이익을 잘 따져보고 설정.
4. 조인 최적화
- 목적: 조인 연산의 효율성을 높이고 불필요한 데이터 처리를 줄임.
- 방법:
- 적절한 조인 순서 결정:
- 대량의 데이터가 포함된 테이블을 가능한 한 나중에 조인하도록 순서를 최적화.
- driving table(처음 조인되는 테이블)을 신중히 선택하여 조인 연산 비용을 줄임.
- 인덱스를 통한 조인 최적화:
- 조인 컬럼에 인덱스를 설정하여 조인 연산 속도를 향상.
- Nested Loop Join, Hash Join, Merge Join 등 다양한 조인 방식의 특성을 이해하고, 상황에 맞는 최적의 조인 방식을 선택.
5. 서브쿼리 최적화
- 목적: 서브쿼리에 의한 성능 저하를 방지하고, 효율적인 데이터 처리를 구현.
- 방법:
- 서브쿼리 대신 조인 사용:
- 가능하다면 서브쿼리를 조인으로 변환하여 성능을 향상.
- 서브쿼리가 각 행마다 반복적으로 실행되는 경우 성능 저하를 유발할 수 있음.
- 서브쿼리 결과의 캐싱:
- 반복 사용되는 서브쿼리의 결과를 임시 테이블 또는 뷰에 저장하여 성능을 개선.
- 한 번의 연산으로 결과를 저장하고, 이후 동일한 결과를 재사용하여 불필요한 연산을 줄임.
'DBMS > PERFORMANCE' 카테고리의 다른 글
index tuning (0) | 2024.08.06 |
---|---|
INDEX TUNNING (0) | 2024.07.08 |
데이터 정합성 for update (0) | 2024.07.03 |
B-tree index structure (0) | 2024.07.03 |
ROWNUM - COUNT STOPKEY (0) | 2024.04.19 |