데이터베이스 인덱스(INDEX)의 선택과 적용
데이터베이스 성능 최적화의 핵심 요소인 인덱싱은 효율적인 데이터 검색과 쿼리 실행을 가능하게 합니다. 인덱스를 선택하고 활용하기 위해서는 최적의 성능을 위해 다양한 요인을 신중하게 고려해야 합니다. 이번 글에서는 인덱스 선택 절차와 기준, 인덱스 스캔 원리, 그리고 쿼리 실행에 미치는 영향 등에 대해 알아보겠습니다.
인덱스(Index) 선택
쿼리 최적화를 위한 인덱스의 선택 절차
- 접근 경로 분석 – 응용 프로그램에서 사용되는 모든 테이블의 접근 경로를 평가
- 인덱스 칼럼 선택 및 분포도 분석 – 자주 사용되는 조건과 분포 특성을 기반으로 인덱스 칼럼을 결정
- 중요한 접근 경로 결정 – 시스템 성능에 큰 영향을 미치는 빈도가 높은 칼럼을 식별
- 인덱스 칼럼 조합 및 순서 – 성능 최적화를 위해 인덱스 칼럼의 조합과 순서를 결정
- 테스트 및 검증 – 테스트 시나리오를 만들고 선택한 인덱스를 검증
- 선택한 인덱스 적용 – 선택한 인덱스를 프로그램에 적용
- 최종 적용 – 인덱스를 운영 환경에 적용 및 통합
인덱스 선택시 고려사항
인덱스 칼럼을 선택할 때 아래의 내용들 고려 필요
- 포함 기준
- WHERE 절에서 자주 사용되는 칼럼.
- 테이블 조인을 위해 링크로 자주 사용되는 칼럼.
- MIN, MAX 또는 정렬 조건에 사용되는 칼럼.
- 제외 기준
- 분포가 좋지 않은 칼럼.
- 행 수가 적은 테이블의 칼럼(5개 블록 미만)
- 자주 수정되는 칼럼.
인덱스 조합 및 순서
분포가 좋지 않은 칼럼을 결합하여 전반적인 분포 개선을 고려하며, 좋은 분포를 가진 칼럼이 개별적으로 인덱싱되어 있고 SQL 문에서 인덱스 병합이 발생하는 경우, 인덱스 병합의 영향을 고려해야 합니다.
인덱스 적용 고려 사항
- 기존 프로그램 동작에 영향을 미치지 않는지 확인해야 합니다.
- 인덱스 사용이 잠재적인 DML 성능 저하에 영향을 미치는지에 대하여 고려해야 합니다.
- 분포가 좋지 않은 칼럼을 인덱싱하면 오히려 성능이 저하될 수 있으므로 주의가 필요합니다.
- 좋은 분포를 가진 칼럼을 결합해 자주 사용되는 경우, 복합 인덱스 생성을 고려합니다.
- ‘LIKE’나 ‘BETWEEN’ 조건의 영향을 고려합니다.
결론
효율적인 인덱스 선택과 활용은 데이터베이스 성능 최적화에 중요한 요소인데요, 구조화된 인덱스 선택 절차와 정의된 기준을 따르면 쿼리 실행 속도와 전체 시스템 효율성을 향상시킬 수 있습니다. 높은 영향을 가진 칼럼을 우선 선택하고, 인덱스 조합을 전략적으로 결정하며, 인덱스 적용 후 적절히 테스트를 진행하며, 쿼리 성능과 시스템 안정성 사이의 적당한 균형을 유지할 필요가 있습니다.
이전 글 – 오라클 인덱스에 대해 알아보자 (데이터베이스 실무에서 효율적으로 사용 할 수 있는 Oracle Index)
이전 글 – 데이터베이스 조인(JOIN) – Hash Join의 개념과 장단점