튜닝

2024. 8. 6. 18:06DBMS/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