인덱스
인덱스는 데이터에 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조입니다. 레코드의 삽입과 삭제가 수시로 일어나는 경우에는 인덱스의 개수를 최소로 하는 것이 효율적입니다. 인덱스의 종류는 다음과 같습니다.
트리 기반 인덱스 |
비트맵 인덱스 |
함수 기반 인덱스 |
비트맵 조인 인덱스 |
도메인 인덱스 |
인덱스를 저장하는 블록들이 트리 구조 |
인덱스 컬럼의 데이터가 Bit 값(0 또는 1) |
컬럼에 함수나 수식을 적용 |
다수의 조인된 객체로 구성된 인덱스 |
개발자가 직접 만든 인덱스 |
클러스터드 인덱스 | 넌클러스터드 인덱스 |
- 인덱스 키의 순서에 따라 데이터가 정렬되는 방식 - 인덱스를 검색하지 않아도 원하는 데이터 찾을 수 있음 |
- 인덱스의 키 값만 정렬되어 있는 방식 - 데이터 삽입, 삭제 시 데이터를 재정렬해야 함 |
뷰
뷰는 하나 이상의 기본 테이블로부터 유도된 가상 테이블입니다. 뷰의 특징과 장단점은 아래와 같습니다.
- 물리적으로 존재하진 않지만 사용자에게는 존재하는 것처럼 보입니다.
- 뷰를 통해서만 데이터에 접근하게 하면, 뷰에 나타나지 않는 데이터를 안전하게 보호할 수 있습니다.
- 테이블이나 뷰를 삭제할 때, 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 같이 삭제됩니다.
장점 | 단점 |
- 논리적 데이터 독립성 제공 - 동일 데이터에 대해 동시에 여러 사용자의 상이한 요구를 지원 - 사용자의 데이터 관리를 간단하게 해줌 - 자동 보안 |
- 독립적인 인덱스를 가질 수 없음 - 뷰의 정의를 변경할 수 없음 - 뷰로 구성된 내용은 삽입, 삭제, 갱신 시 제약이 따름 |
클러스터
클러스터는 동일한 성격의 데이터를 동일한 데이터 블록에 저장하는 물리적 저장 방법입니다. 클러스터는 아래와 같은 특징을 갖습니다.
- 데이터 조회 속도를 향상시킵니다.
- 입력, 수정, 삭제 작업 성능이 저하됩니다.
- 클러스터는 데이터 분포도가 넓을수록 유리합니다.
- 단일 테이블 클러스터링 : 처리 범위가 넓은 경우
- 다중 테이블 클러스터링 : 조인이 많이 발생하는 경우
파티션
파티셔닝은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 말합니다. 대용량 DB에서 몇 개의 테이블에만 집중되는 경우, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 수 있습니다.
파티션의 장단점은 다음과 같습니다.
장점 | 단점 |
- 데이터 접근 시 액세스 범위가 줄어들어 쿼리 성능 향상 - 디스크 성능 향상 - 백업 및 복구 속도 향상 - 시스템 장애 시 데이터 손상 최소화 - 데이터 가용성 향상 - 입출력 분산 가능 |
- 세심한 관리가 요구됨 - 테이블간 조인 비용 증가 - 용량이 작은 테이블을 파티셔닝하면 오히려 성능 저하 |
파티션의 종류는 다음과 같습니다.
범위 분할 | 해시 분할 | 조합 분할 |
열의 값을 기준으로 분할 | 해시 함수 결과 값에 따라 분할 데이터가 고르게 분산됨 |
범위 분할 + 해시 분할 |
※ 작업 단위
- 데이터 처리 : 테이블 단위
- 데이터 저장 : 파티션 단위
'etc. > 정보처리기사' 카테고리의 다른 글
데이터베이스 이중화 (0) | 2021.09.04 |
---|---|
분산 데이터베이스 (0) | 2021.09.04 |
★ 트랜잭션 분석 / CRUD 분석 (0) | 2021.09.03 |
데이터베이스 저장 공간 설계 (0) | 2021.09.03 |
시스템 카탈로그 (0) | 2021.09.03 |