1. 데이터베이스 인덱스의 개념
가. 인덱스(Index)의 정의
- 데이터의 검색속도 개선을 위해 테이블 Row를 동일한 경로로 식별가능하도록 별도로 구조화 한
데이터 객체
-대표키와 ROWID를 통한 액세스가 가장 빠른 조회경로
- Hash, B-Tree 등 검색 알고리즘 이용, 조회성능 향상
나. 인덱스의 선정 기준
1) 기본키와 외래키
- 기본키는 자동으로 인덱스 생성
- 외래키는 Full Scan을 예방하기 위해 상상 인덱스 선정
2) 접근 경로 분석
- 각 어플리케이션이 수행하는 SQL 수집
- 자주 사용하는 SQL 분석 수행, 인덱스 선정
3) 분포도 조사
- 분포도 = 평균 ROW 수 / 총 ROW*100
- 분포도가 10~15% 정도의 컬럼을 인덱스 후보로 도출
4) 인덱스 순서 결정
- 조합인덱스의 경우 접근경로에 따른 순서 결정
- 접근경로를 분석하여 부분범위 처리 수행
2. 순서인덱스와 클러스터 인덱스
가. 순서인덱스
- 단일 인덱스 : 데이터 파일의 블록에 하나의 엔트리를 가지는 인덱스
- 결합 인덱스 : 두개 이상의 키로 구성된 인덱스
나. 클러스터 인덱스
- 저장된 데이터의 물리적 순서에 따라 인덱스 생성(삽입, 삭제 시 재정렬)
- 실제 물리적 데이터 순서대로 검색하므로 속도 빠름
- 한개의 릴레이션에서 한개의 인덱스만 가능
3. 해쉬 인덱스와 비트맵 인덱스
가. 해쉬 인덱스
문제점 : 해시키 값의 충돌로 인해 오버플로우 발생, 클러스터링 팩터 나빠저 효율감소
예) 소형 데이터, 우편번호, 시스템 사용자 정보 등
나. 비트맵 인덱스
- 비트 이용 컬럼값 저장, ROWID를 자동으로 생성하는 인덱스
- 생성 유지의 제약으로 OLAP에 적합(검색시 장점)
- 선분형태로 저장하여 키압축이 적용되어 저장공간 wjffir
- 문제점 :
'='이 아닌 LIKE, >, <, >=, <= 등은 추출 비트 명확하지 않음
빈번한 수정시 블럭레벨 잠금으로 부하 유발
4. 인덱스 성능향상 기법과 사용시 고려사항
가. 옵티마이저를 이용한 성능향상 기법 비교
- RBO(Rule Based Optimizer)
개념 : 사전에 정의된 Rule 기반 계획
기준 : 실행 우선 순위(Ranking)
성능 : 사용자 SQL 작성 숙련도
특징 : 실행계획의 예측이 용이함
고려사항 : 저효율, 사용자의 규칙이해도
- CBO(Cost Based Optimizer)
개념:최소비용 계산 실행계획 수립
기준 : 억세스비용(Cost)
성능 : Optimizer 예측 성능
특징 : 저장된 통계정보의 활용
고려사항 : 예측 복잡, 비용산출 공식 정확성
나. 인덱스 사용시 고려사항
- 적용업무의 성격에 맞는 유형의 선택 필요함(OLAP, OLTP)
- 지나치게 많은 인덱스는 오버헤드 발생, 분포도 좋은 컬럼 만 사용
- 조인시 옵티마이저가 인덱스 사용하도록 유도
- I/O 발생으로 인덱스는 별도 테이블 스페이스/파일지정유리(주기적 Rebuild)
"끝"
'정보처리기술사 > 02.토픽자료' 카테고리의 다른 글
B트리 기반 인덱스 (0) | 2012.05.07 |
---|---|
비트맵 인덱스 (0) | 2012.05.07 |
스스로 글을 읽고 정리할 수 있는 능력 배양 (0) | 2012.05.07 |
테스트 오라클(Test Oracle) (0) | 2011.03.08 |
Mobile IPTV (0) | 2011.03.08 |