DBMS의 인덱싱: 예가 포함된 인덱스 유형이란 무엇입니까?
⚡ 스마트 요약
데이터베이스 인덱싱은 맵을 이용하여 레코드를 빠르게 검색하는 데이터 구조 기법입니다.ping 레코드의 디스크 주소를 검색하는 키입니다. 기본, 보조, 클러스터링, 다단계 및 B-트리 인덱스는 각각 공간, 속도 및 유지 관리 측면에서 서로 다른 장단점을 가지고 있습니다.

인덱싱이란 무엇입니까?
색인 인덱스는 데이터베이스 파일에서 레코드를 빠르게 검색할 수 있도록 해주는 데이터 구조 기법입니다. 인덱스는 두 개의 열로만 구성된 작은 테이블입니다. 첫 번째 열에는 테이블의 기본 키 또는 후보 키의 복사본이 포함되고, 두 번째 열에는 일련의 값이 저장됩니다. 포인터 해당 키 값이 저장된 디스크 블록의 주소를 보유하고 있습니다.
색인:
- 검색 키를 입력으로 받습니다.
- 일치하는 레코드 모음을 효율적으로 반환합니다.
인덱스가 없으면 데이터베이스는 쿼리에 응답하기 위해 모든 행을 스캔해야 합니다. 하지만 인덱스가 있으면 일치하는 블록으로 바로 이동하므로 인덱스 유형 선택이 성능에 큰 영향을 미칩니다.
DBMS의 인덱싱 유형

데이터베이스의 인덱싱은 인덱싱 속성을 기반으로 정의됩니다. 주요 인덱싱 방법에는 두 가지 유형이 있습니다.
- 기본 인덱싱
- 보조 인덱싱
DBMS의 기본 인덱스
기본 인덱스는 두 개의 필드로 구성된 고정 길이의 정렬된 파일입니다. 첫 번째 필드는 기본 키와 동일하며, 두 번째 필드는 특정 데이터 블록을 가리킵니다. 기본 인덱스에서는 인덱스 테이블의 항목 간에 항상 일대일 관계가 유지됩니다.
기본 색인은 다시 두 가지 유형으로 나뉩니다.
- 고밀도 색인
- 희소 색인
고밀도 색인
밀집 인덱스에서는 데이터베이스의 모든 검색 키 값에 대해 레코드가 생성됩니다. 이렇게 하면 검색 속도가 빨라지지만 인덱스 레코드를 저장하는 데 더 많은 공간이 필요합니다. 이 방법에서는 레코드에 검색 키 값이 포함되고 디스크의 실제 레코드를 가리킵니다.
희소 색인
희소 인덱스는 파일의 일부 값에 대해서만 나타나는 인덱스 레코드입니다. 희소 인덱스는 밀집 인덱싱의 문제점을 해결하는 데 도움이 됩니다. DBMS이 기법에서는 인덱스 열 범위에 동일한 데이터 블록 주소가 저장되고, 데이터를 검색해야 할 때 해당 블록 주소를 가져옵니다.
희소 인덱스는 일부 검색 키 값에 대한 인덱스 레코드만 저장합니다. 공간을 적게 차지하고 삽입 및 삭제에 대한 유지 관리 오버헤드가 적지만, 레코드를 찾는 속도는 밀집 인덱스보다 느립니다.
아래는 희소 인덱스의 데이터베이스 인덱스 예시입니다.
밀집 인덱스 vs 희소 인덱스
두 가지 주요 지수 변형은 서로 상반되는 장단점을 가지며, 그 요약은 아래와 같습니다.
| 아래 | 고밀도 색인 | 희소 색인 |
|---|---|---|
| 항목 | 검색 키당 하나씩 | 블록당 하나씩 |
| 우주 산업 | 더 보기 | Less |
| 검색 속도 | 빠른 | 느린 |
| 유지보수 | 더 높은 | 낮 춥니 다 |
DBMS의 보조 인덱스
DBMS의 보조 인덱스는 레코드마다 고유한 값을 가지는 필드를 사용하여 생성할 수 있으며, 해당 필드는 후보 키여야 합니다. 이는 비클러스터링 인덱스라고도 합니다.
이 2단계 데이터베이스 인덱싱 기법은 맵 크기를 줄이는 데 사용됩니다.ping 첫 번째 레벨의 크기. 첫 번째 레벨에는 넓은 범위의 숫자가 선택되므로 지도가 생성됩니다.ping 크기는 항상 작게 유지됩니다.
보조 인덱스 예
데이터베이스 인덱스 예시를 통해 보조 인덱싱을 이해해 보겠습니다. 은행 계좌 데이터베이스에서 데이터는 계좌번호(acc_no) 순으로 순차적으로 저장되지만, ABC 은행의 특정 지점에 있는 모든 계좌를 찾고 싶을 수 있습니다.
여기서는 각 검색 키마다 보조 인덱스를 생성할 수 있습니다. 인덱스 레코드는 해당 검색 키 값을 가진 모든 레코드에 대한 포인터가 포함된 버킷을 가리킵니다.
ClusterDBMS에 인덱스를 넣는 중
클러스터형 인덱스에서는 레코드 자체가 인덱스에 저장되며, 포인터는 저장되지 않습니다. 때때로 인덱스는 기본 키가 아닌 열에 생성되는데, 이 열들은 각 레코드에 대해 고유하지 않을 수 있습니다. 이러한 경우, 두 개 이상의 열을 그룹화하여 고유한 값을 갖도록 인덱스를 생성할 수 있으며, 이를 클러스터형 인덱스라고 합니다. 클러스터형 인덱스는 레코드를 더 빠르게 식별하는 데에도 도움이 됩니다.
예: 한 회사가 여러 부서에 많은 직원을 채용했다고 가정해 보겠습니다. 이 경우, 동일 부서에 속한 모든 직원을 대상으로 클러스터링 인덱스를 생성해야 합니다.
이들은 하나의 클러스터로 간주되며, 인덱스는 클러스터 전체를 가리킵니다. 여기서 Department_no는 고유하지 않은 키입니다.
다단계 인덱스란 무엇인가요?
다단계 인덱싱은 기본 인덱스가 메모리에 맞지 않을 때 생성됩니다. 이 인덱싱 방식을 사용하면 레코드에 접근하는 데 필요한 디스크 액세스 횟수를 줄일 수 있습니다. 레코드는 순차 파일 형태로 디스크에 저장되고, 해당 파일 위에 희소 인덱스가 생성됩니다.
B- 트리 인덱스
B-트리 인덱스는 DBMS에서 트리 기반 인덱싱에 가장 널리 사용되는 데이터 구조입니다. 이는 균형 잡힌 메모리 사용량을 특징으로 하는 다단계 트리 기반 인덱싱 형식입니다. 이진 검색 트리B-트리의 모든 리프 노드는 실제 데이터 포인터를 보유합니다.
또한 모든 리프 노드는 연결 리스트로 서로 연결되어 있어 B-트리는 임의 접근과 순차 접근 모두를 지원할 수 있습니다.
- 리프 노드는 2개에서 4개 사이의 값을 가져야 합니다.
- 뿌리에서 잎까지 이어지는 모든 경로의 길이는 대부분 동일합니다.
- 루트 노드를 제외한 비리프 노드는 3개에서 5개 사이의 자식 노드를 가집니다.
- 루트 노드나 리프 노드가 아닌 모든 노드는 n/2에서 n 사이의 자식 노드를 가집니다.
정확한 일치 검색이 주를 이루고 범위 검색이 드문 경우, 해싱 B-트리 인덱스보다 빠른 대안이 될 수 있습니다.
인덱싱의 장점
인덱싱의 중요한 장점은 다음과 같습니다.
- 이는 데이터를 검색하는 데 필요한 전체 I/O 작업 수를 줄여주므로 테이블에서 행에 직접 접근할 필요가 없습니다.
- 이 서비스는 사용자에게 더 빠른 데이터 검색 및 검색 기능을 제공합니다.
- 연결된 모든 행에 대해 인덱스에 ROWID를 저장할 필요가 없으므로 테이블스페이스를 줄일 수 있습니다.
- 리프 노드의 데이터는 이미 키 값에 따라 정렬되어 있습니다.
인덱싱의 단점
인덱싱의 중요한 단점은 다음과 같습니다.
- 인덱싱을 수행하려면 테이블에 고유한 값을 가진 기본 키가 필요합니다.
- 이미 동일한 방식으로 인덱스가 구성된 데이터에는 다른 인덱스를 생성할 수 없습니다.
- 인덱스 구성 테이블을 분할할 수 없습니다.
- 인덱싱은 INSERT, DELETE 및 UPDATE 쿼리의 성능을 저하시킵니다.





