DBMS의 인덱싱: 예가 포함된 인덱스 유형이란 무엇입니까?

⚡ 스마트 요약

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

  • 🗂️ 핵심 아이디어: 인덱스는 키와 레코드가 저장된 디스크 블록을 가리키는 포인터를 쌍으로 나타내는 두 열로 구성된 작은 테이블입니다.
  • 📇 기본 색인: 키에 대한 정렬된 파일로, 밀집형과 희소형으로 나뉩니다.
  • 🔎 밀집형 vs 희소형: 밀집 인덱스는 키당 하나의 항목을 저장하고, 희소 인덱스는 공간을 절약하기 위해 더 적은 항목을 저장합니다.
  • 🏷️ 보조 색인: 순서 관계가 없는 필드를 기반으로 구축되었으며, 버킷을 사용하여 일치하는 모든 레코드에 접근합니다.
  • 📚 Cluster색인: 고유하지 않은 키를 공유하는 행들을 하나의 클러스터로 그룹화합니다.
  • 🌳 B-트리 인덱스: 연결된 리프 노드가 임의 접근과 순차 접근을 모두 지원하는 균형 잡힌 다단계 트리.
  • ⚖️ 트레이드오프: 인덱스는 읽기 속도는 빠르지만 삽입, 업데이트 및 삭제 속도는 느리고 추가 공간을 차지합니다.

데이터베이스 인덱싱

인덱싱이란 무엇입니까?

색인 인덱스는 데이터베이스 파일에서 레코드를 빠르게 검색할 수 있도록 해주는 데이터 구조 기법입니다. 인덱스는 두 개의 열로만 구성된 작은 테이블입니다. 첫 번째 열에는 테이블의 기본 키 또는 후보 키의 복사본이 포함되고, 두 번째 열에는 일련의 값이 저장됩니다. 포인터 해당 키 값이 저장된 디스크 블록의 주소를 보유하고 있습니다.

색인:

  • 검색 키를 입력으로 받습니다.
  • 일치하는 레코드 모음을 효율적으로 반환합니다.

인덱스가 없으면 데이터베이스는 쿼리에 응답하기 위해 모든 행을 스캔해야 합니다. 하지만 인덱스가 있으면 일치하는 블록으로 바로 이동하므로 인덱스 유형 선택이 성능에 큰 영향을 미칩니다.

DBMS의 인덱싱 유형

데이터베이스의 인덱스 유형
데이터베이스의 인덱스 유형

데이터베이스의 인덱싱은 인덱싱 속성을 기반으로 정의됩니다. 주요 인덱싱 방법에는 두 가지 유형이 있습니다.

  • 기본 인덱싱
  • 보조 인덱싱

DBMS의 기본 인덱스

기본 인덱스는 두 개의 필드로 구성된 고정 길이의 정렬된 파일입니다. 첫 번째 필드는 기본 키와 동일하며, 두 번째 필드는 특정 데이터 블록을 가리킵니다. 기본 인덱스에서는 인덱스 테이블의 항목 간에 항상 일대일 관계가 유지됩니다.

기본 색인은 다시 두 가지 유형으로 나뉩니다.

  • 고밀도 색인
  • 희소 색인

고밀도 색인

밀집 인덱스에서는 데이터베이스의 모든 검색 키 값에 대해 레코드가 생성됩니다. 이렇게 하면 검색 속도가 빨라지지만 인덱스 레코드를 저장하는 데 더 많은 공간이 필요합니다. 이 방법에서는 레코드에 검색 키 값이 포함되고 디스크의 실제 레코드를 가리킵니다.

DBMS의 밀집 인덱스

희소 색인

희소 인덱스는 파일의 일부 값에 대해서만 나타나는 인덱스 레코드입니다. 희소 인덱스는 밀집 인덱싱의 문제점을 해결하는 데 도움이 됩니다. DBMS이 기법에서는 인덱스 열 범위에 동일한 데이터 블록 주소가 저장되고, 데이터를 검색해야 할 때 해당 블록 주소를 가져옵니다.

희소 인덱스는 일부 검색 키 값에 대한 인덱스 레코드만 저장합니다. 공간을 적게 차지하고 삽입 및 삭제에 대한 유지 관리 오버헤드가 적지만, 레코드를 찾는 속도는 밀집 인덱스보다 느립니다.

아래는 희소 인덱스의 데이터베이스 인덱스 예시입니다.

DBMS의 희소 인덱스

밀집 인덱스 vs 희소 인덱스

두 가지 주요 지수 변형은 서로 상반되는 장단점을 가지며, 그 요약은 아래와 같습니다.

아래 고밀도 색인 희소 색인
항목 검색 키당 하나씩 블록당 하나씩
우주 산업 더 보기 Less
검색 속도 빠른 느린
유지보수 더 높은 낮 춥니 다

DBMS의 보조 인덱스

DBMS의 보조 인덱스는 레코드마다 고유한 값을 가지는 필드를 사용하여 생성할 수 있으며, 해당 필드는 후보 키여야 합니다. 이는 비클러스터링 인덱스라고도 합니다.

이 2단계 데이터베이스 인덱싱 기법은 맵 크기를 줄이는 데 사용됩니다.ping 첫 번째 레벨의 크기. 첫 번째 레벨에는 넓은 범위의 숫자가 선택되므로 지도가 생성됩니다.ping 크기는 항상 작게 유지됩니다.

보조 인덱스 예

데이터베이스 인덱스 예시를 통해 보조 인덱싱을 이해해 보겠습니다. 은행 계좌 데이터베이스에서 데이터는 계좌번호(acc_no) 순으로 순차적으로 저장되지만, ABC 은행의 특정 지점에 있는 모든 계좌를 찾고 싶을 수 있습니다.

여기서는 각 검색 키마다 보조 인덱스를 생성할 수 있습니다. 인덱스 레코드는 해당 검색 키 값을 가진 모든 레코드에 대한 포인터가 포함된 버킷을 가리킵니다.

DBMS의 보조 인덱스

ClusterDBMS에 인덱스를 넣는 중

클러스터형 인덱스에서는 레코드 자체가 인덱스에 저장되며, 포인터는 저장되지 않습니다. 때때로 인덱스는 기본 키가 아닌 열에 생성되는데, 이 열들은 각 레코드에 대해 고유하지 않을 수 있습니다. 이러한 경우, 두 개 이상의 열을 그룹화하여 고유한 값을 갖도록 인덱스를 생성할 수 있으며, 이를 클러스터형 인덱스라고 합니다. 클러스터형 인덱스는 레코드를 더 빠르게 식별하는 데에도 도움이 됩니다.

예: 한 회사가 여러 부서에 많은 직원을 채용했다고 가정해 보겠습니다. 이 경우, 동일 부서에 속한 모든 직원을 대상으로 클러스터링 인덱스를 생성해야 합니다.

이들은 하나의 클러스터로 간주되며, 인덱스는 클러스터 전체를 가리킵니다. 여기서 Department_no는 고유하지 않은 키입니다.

다단계 인덱스란 무엇인가요?

다단계 인덱싱은 기본 인덱스가 메모리에 맞지 않을 때 생성됩니다. 이 인덱싱 방식을 사용하면 레코드에 접근하는 데 필요한 디스크 액세스 횟수를 줄일 수 있습니다. 레코드는 순차 파일 형태로 디스크에 저장되고, 해당 파일 위에 희소 인덱스가 생성됩니다.

DBMS의 다단계 인덱스

B- 트리 인덱스

B-트리 인덱스는 DBMS에서 트리 기반 인덱싱에 가장 널리 사용되는 데이터 구조입니다. 이는 균형 잡힌 메모리 사용량을 특징으로 하는 다단계 트리 기반 인덱싱 형식입니다. 이진 검색 트리B-트리의 모든 리프 노드는 실제 데이터 포인터를 보유합니다.

또한 모든 리프 노드는 연결 리스트로 서로 연결되어 있어 B-트리는 임의 접근과 순차 접근 모두를 지원할 수 있습니다.

DBMS의 B-트리 인덱스

  • 리프 노드는 2개에서 4개 사이의 값을 가져야 합니다.
  • 뿌리에서 잎까지 이어지는 모든 경로의 길이는 대부분 동일합니다.
  • 루트 노드를 제외한 비리프 노드는 3개에서 5개 사이의 자식 노드를 가집니다.
  • 루트 노드나 리프 노드가 아닌 모든 노드는 n/2에서 n 사이의 자식 노드를 가집니다.

정확한 일치 검색이 주를 이루고 범위 검색이 드문 경우, 해싱 B-트리 인덱스보다 빠른 대안이 될 수 있습니다.

인덱싱의 장점

인덱싱의 중요한 장점은 다음과 같습니다.

  • 이는 데이터를 검색하는 데 필요한 전체 I/O 작업 수를 줄여주므로 테이블에서 행에 직접 접근할 필요가 없습니다.
  • 이 서비스는 사용자에게 더 빠른 데이터 검색 및 검색 기능을 제공합니다.
  • 연결된 모든 행에 대해 인덱스에 ROWID를 저장할 필요가 없으므로 테이블스페이스를 줄일 수 있습니다.
  • 리프 노드의 데이터는 이미 키 값에 따라 정렬되어 있습니다.

인덱싱의 단점

인덱싱의 중요한 단점은 다음과 같습니다.

  • 인덱싱을 수행하려면 테이블에 고유한 값을 가진 기본 키가 필요합니다.
  • 이미 동일한 방식으로 인덱스가 구성된 데이터에는 다른 인덱스를 생성할 수 없습니다.
  • 인덱스 구성 테이블을 분할할 수 없습니다.
  • 인덱싱은 INSERT, DELETE 및 UPDATE 쿼리의 성능을 저하시킵니다.

자주 묻는 질문

기본 인덱스는 파일의 정렬 기준이 되는 필드(일반적으로 기본 키)를 기반으로 구축됩니다. 보조 인덱스는 다른 필드를 기반으로 구축되므로, 일치하는 모든 레코드에 접근하려면 버킷이 필요합니다.

B-트리는 균형을 유지하기 때문에 모든 조회 작업에서 디스크 읽기 횟수가 비슷하게 적고, 연결된 리프 노드는 범위 스캔을 지원합니다. 따라서 B-트리는 포인트 쿼리와 범위 쿼리 모두에 강력한 성능을 발휘합니다.

모든 삽입, 업데이트 및 삭제 작업은 각 인덱스를 유지 관리해야 합니다. 인덱스가 많을수록 읽기 속도는 빨라지지만 쓰기 오버헤드와 저장 공간이 증가하므로 쿼리에서 실제로 이점을 얻을 수 있는 경우에만 생성해야 합니다.

AI 인덱스 어드바이저는 쿼리 워크로드를 분석하여 비용을 가장 많이 절감할 수 있는 인덱스를 추천하는 동시에, 전혀 사용되지 않고 오버헤드만 추가하는 기존 인덱스를 표시합니다.

클러스터형 인덱스는 인덱스 순서대로 행 자체를 저장하므로 테이블에는 하나만 있을 수 있습니다. 비클러스터형 인덱스는 행에 대한 포인터를 저장하므로 테이블에는 여러 개의 비클러스터형 인덱스가 있을 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.