1. 인덱스(Index)
1.1 인덱스의 개념 및 선정기준, 고려사항
- 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터>쌍으로 구성된 데이터 구조
1.2 인덱스 컬럼 선정
-인덱스 컬럼의 분포도(Selectivity)가 10~15% 이내인 컬럼
-가능한 한 수정이 빈번하지 않는 컬럼
-ORDER BY, GROUP BY, UNION이 빈번한 컬럼
(1) 인덱스 컬럼 유형 선정
-단독 인덱스 : 분포도가 좋은 컬럼으로 생성
-결합 인덱스 : 인덱스들이 자주 조합되어 사용되는 컬럼들로 생성
1.3 설계 시 고려사항
-새로 추가되는 인덱스는 기존 엑세스 경로에 영향을 미칠 수 있음
-지나치게 많은 인덱스는 오버헤드(Overhead) 발생
-넓은 범위 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킴
-인덱스만의 추가적인 저장 공간이 필요
-인덱스와 테이블 데이터의 저장 공간이 분리되도록 설계
1.4 인덱스 종류
- 클러스터드형 인덱스(Clustered Index): 테이블 자체가 인덱스로 1개만 설정 가능, 데이터 입력, 수정, 삭제 시 항상 정렬을 유지함
- 비클러스터드형 인덱스(Non-Clustered Index): 인덱스 페이지를 따로 구분하며 데이터 자체는 정렬되지 않고, 인덱스 페이지에만 정렬, 인덱스 키값만 정렬,
삽입, 삭제 발생 시 순서 유지를 위해 데이터 재정렬 필요 - 트리 기반 인덱스: 인덱스를 저장하는 블록들이 트리 구조를 이루고 있는 것
- 함수 기반 인덱스: 컬럼에 특정 함수나 수식을 적용해 산출된 값을 사용하는 것
- 비트맵 인덱스: 인덱스 컬럼의 데이터를 Bit 값인 0, 1로 변환해 인덱스 키 사용
- 비트맵 조인 인덱스: 다수의 조인된 객체로 구성된 인덱스
- 도메인 인덱스: 개발자가 필요한 인덱스를 직접 만들어 사용하는 것 (확장형 인덱스)
2. 클러스터(Cluster)
- 데이터 저장 시 데이터 액세스 효율을 향상시키기 위해 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법
2.1 클러스터 특징
- 인덱스를 사용한 처리 부담이 되는 단점을 해결한 기법으로 넓은 분포도(Selectivity)에 활용(넓을수록 유리함)
- 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약이 가능
- 대량의 범위를 자주 액세스(조회)하는 경우 적용 (생성, 업데이트, 제거가 빈번한 경우에는 좋지 않음)
2.2 클러스터 테이블 선정기준
컬럼의 분포도를 제외하고 인덱스 컬럼 선정기준과 동일
-수정이 빈번하지 않는 테이블
-ORDER BY, GROUP BY, UNION이 빈번한 테이블
(1) 클러스터 테이블 유형 선정
-단일 테이블 클러스터링 : 처리 범위가 넓어 문제가 발생하는 경우 사용
-다중 테이블 클러스터링 : 조인이 많아 문제가 발생되는 경우는 사용
2.3 설계 시 고려사항
-클러스터링 된 테이블은 조회 속도를 향상시켜주지만 입력, 수정, 삭제 시 성능이 저하됨(부하 증가)
-대용량을 처리하는 트랜잭션은 전체 테이블을 스캔하는 일이 자주 발생하므로 클러스터링을 하지 않는 것이 좋음
-클러스터링 된 테이블에 클러스터드 인덱스를 생성하면 접근 성능이 향상됨
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터 베이스 보안 (0) | 2022.06.09 |
---|---|
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/분산 데이터베이스 설계 (0) | 2022.06.08 |
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/트랜잭션 (0) | 2021.09.16 |
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/데이터베이스 저장 공간 설계 (0) | 2021.09.15 |
[정보처리기사]3.데이터베이스 구축/물리 데이터베이스 설계/시스템 카탈로그,뷰 (0) | 2021.09.14 |