logo

DBMS의 인덱싱

  • 인덱싱은 쿼리를 처리할 때 필요한 디스크 액세스 횟수를 최소화하여 데이터베이스 성능을 최적화하는 데 사용됩니다.
  • 인덱스는 데이터 구조의 한 유형입니다. 데이터베이스 테이블의 데이터를 빠르게 찾고 액세스하는 데 사용됩니다.

인덱스 구조:

일부 데이터베이스 열을 사용하여 인덱스를 만들 수 있습니다.

DBMS의 DBMS 인덱싱
  • 데이터베이스의 첫 번째 열은 테이블의 기본 키 또는 후보 키의 복사본을 포함하는 검색 키입니다. 기본 키의 값은 해당 데이터에 쉽게 접근할 수 있도록 정렬된 순서로 저장됩니다.
  • 데이터베이스의 두 번째 열은 데이터 참조입니다. 여기에는 특정 키의 값을 찾을 수 있는 디스크 블록의 주소를 보유하는 포인터 세트가 포함되어 있습니다.

인덱싱 방법

DBMS의 DBMS 인덱싱

정렬된 인덱스

색인은 일반적으로 검색 속도를 높이기 위해 정렬됩니다. 정렬된 인덱스를 정렬된 인덱스라고 합니다.

: 수천 개의 레코드가 있고 각 레코드의 길이가 10바이트인 직원 테이블이 있다고 가정합니다. ID가 1, 2, 3....등으로 시작하는 경우 ID-543으로 학생을 검색해야 합니다.

  • 인덱스가 없는 데이터베이스의 경우 디스크 블록을 시작부터 543에 도달할 때까지 검색해야 합니다. DBMS는 543*10=5430바이트를 읽은 후 레코드를 읽습니다.
  • 인덱스의 경우 인덱스를 이용하여 검색하게 되며 DBMS는 이전 경우에 비해 매우 적은 542*2= 1084바이트를 읽은 후 레코드를 읽습니다.

기본 인덱스

  • 테이블의 기본 키를 기반으로 인덱스가 생성되는 경우 이를 기본 인덱싱이라고 합니다. 이러한 기본 키는 각 레코드마다 고유하며 레코드 간의 1:1 관계를 포함합니다.
  • 기본 키가 정렬된 순서로 저장되므로 검색 작업 성능이 매우 효율적입니다.
  • 기본 인덱스는 Dense 인덱스와 Sparse 인덱스의 두 가지 유형으로 분류할 수 있습니다.

조밀한 색인

  • 밀집 인덱스에는 데이터 파일의 모든 검색 키 값에 대한 인덱스 레코드가 포함되어 있습니다. 검색 속도가 빨라집니다.
  • 이때 인덱스 테이블의 레코드 수는 메인 테이블의 레코드 수와 동일합니다.
  • 인덱스 레코드 자체를 저장하려면 더 많은 공간이 필요합니다. 인덱스 레코드에는 검색 키와 디스크의 실제 레코드에 대한 포인터가 있습니다.
DBMS의 DBMS 인덱싱

희소 인덱스

  • 데이터 파일에서 색인 기록은 일부 항목에 대해서만 나타납니다. 각 항목은 블록을 가리킵니다.
  • 여기서 인덱스는 메인 테이블의 각 레코드를 가리키는 것이 아니라, 갭을 두고 메인 테이블의 레코드들을 가리킨다.
DBMS의 DBMS 인덱싱

클러스터링 인덱스

  • 클러스터형 인덱스는 순서가 지정된 데이터 파일로 정의할 수 있습니다. 때로는 각 레코드에 대해 고유하지 않을 수 있는 기본 키가 아닌 열에 인덱스가 생성되는 경우도 있습니다.
  • 이 경우 레코드를 더 빨리 식별하기 위해 두 개 이상의 열을 그룹화하여 고유한 값을 얻고 해당 열에서 인덱스를 생성합니다. 이 방법을 클러스터링 인덱스라고 합니다.
  • 유사한 특성을 지닌 레코드들을 그룹화하고, 이들 그룹에 대한 인덱스를 생성합니다.

: 회사의 각 부서에 여러 명의 직원이 있다고 가정합니다. 동일한 Dept_ID에 속하는 모든 직원이 단일 클러스터 내에서 고려되고 인덱스 포인터가 클러스터 전체를 가리키는 클러스터링 인덱스를 사용한다고 가정합니다. 여기서 Dept_Id는 고유하지 않은 키입니다.

DBMS의 DBMS 인덱싱

이전 스키마는 하나의 디스크 블록이 다른 클러스터에 속한 레코드에 의해 공유되므로 약간 혼란스럽습니다. 별도의 클러스터에 대해 별도의 디스크 블록을 사용하는 경우 이를 더 나은 기술이라고 합니다.

DBMS의 DBMS 인덱싱

보조 인덱스

희소 인덱싱에서는 테이블 크기가 커지면 매핑 크기도 커집니다. 이러한 매핑은 일반적으로 주소 가져오기가 더 빨라지도록 기본 메모리에 보관됩니다. 그러면 보조 메모리는 매핑을 통해 얻은 주소를 기반으로 실제 데이터를 검색합니다. 매핑 크기가 커지면 주소 자체를 가져오는 속도가 느려집니다. 이 경우 희소 인덱스는 효율적이지 않습니다. 이 문제를 극복하기 위해 보조 인덱싱이 도입되었습니다.

보조 인덱싱에서는 매핑 크기를 줄이기 위해 다른 수준의 인덱싱이 도입되었습니다. 이 방법에서는 처음에는 큰 범위의 열을 선택하므로 첫 번째 수준의 매핑 크기가 작아집니다. 그런 다음 각 범위는 더 작은 범위로 더 나누어집니다. 첫 번째 수준의 매핑은 기본 메모리에 저장되므로 주소 가져오기가 더 빠릅니다. 두 번째 레벨의 매핑과 실제 데이터는 보조 메모리(하드 디스크)에 저장됩니다.

DBMS의 DBMS 인덱싱

예를 들어:

  • 다이어그램에서 111번 롤의 기록을 찾으려면 첫 번째 수준 인덱스에서 111보다 작거나 같은 가장 높은 항목을 검색합니다. 이 수준에서는 100을 얻습니다.
  • 그런 다음 두 번째 인덱스 수준에서는 다시 최대값(111)을 수행합니다.<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
  • 이 방법에서는 검색이 수행되는 방식입니다. 삽입, 업데이트, 삭제도 같은 방식으로 수행됩니다.