데이터베이스 색인: 초보자를 위한 소개

데이터베이스 색인: 초보자를 위한 소개

'데이터베이스 인덱스'는 데이터베이스 테이블에서 레코드 검색 속도를 높이는 특수한 종류의 데이터 구조를 나타냅니다. 데이터베이스 인덱스를 사용하면 데이터베이스 쿼리가 처리될 때마다 모든 행을 검색할 필요 없이 데이터베이스 테이블의 데이터를 효율적으로 찾고 액세스할 수 있습니다.





데이터베이스 색인은 책의 색인에 비유할 수 있습니다. 책의 색인 페이지가 원하는 주제나 장을 가리키는 것처럼 데이터베이스의 색인은 데이터베이스에서 찾고 있는 레코드를 가리킵니다.





그러나 데이터베이스 인덱스는 빠르고 효율적인 데이터 조회 및 액세스에 필수적이지만 추가 쓰기 및 메모리 공간을 차지합니다.





색인이란 무엇입니까?

데이터베이스 인덱스는 두 개의 열로 구성된 특수 조회 테이블입니다. 첫 번째 열은 검색 키이고 두 번째 열은 데이터 포인터입니다. 키는 데이터베이스 테이블에서 검색 및 검색하려는 값이며 포인터 또는 참조는 해당 특정 검색 키에 대한 데이터베이스의 디스크 블록 주소를 저장합니다. 키 필드는 모든 쿼리에 대한 데이터 검색 작업을 가속화하도록 정렬됩니다.

데이터베이스 인덱싱을 사용하는 이유

여기서는 단순화된 방식으로 데이터베이스 인덱스를 보여 드리겠습니다. 회사에서 일하는 8명의 직원에 대한 데이터베이스 테이블이 있고 테이블의 마지막 항목에 대한 정보를 검색하려고 한다고 가정해 보겠습니다. 이제 이전 항목을 찾으려면 데이터베이스의 각 행을 검색해야 합니다.



그러나 직원의 이름을 기준으로 테이블을 알파벳순으로 정렬했다고 가정합니다. 따라서 여기에서 인덱싱 키는 이름 열을 기반으로 합니다. 이 경우 마지막 항목을 검색하면 , 테이블 중앙으로 이동하여 항목이 열 앞 또는 뒤에 오는지 여부를 결정할 수 있습니다.

아시다시피 중간 행 다음에 올 것이고, 중간 행 뒤에 있는 행을 다시 반으로 나누고 비슷한 비교를 할 수 있습니다. 이렇게 하면 마지막 항목을 찾기 위해 각 행을 탐색할 필요가 없습니다.





회사에 1,000,000명의 직원이 있고 마지막 항목이 Zack인 경우 그의 이름을 찾으려면 50,000행을 검색해야 합니다. 반면에 알파벳순 인덱싱을 사용하면 몇 단계로 수행할 수 있습니다. 이제 데이터베이스 인덱싱으로 데이터 조회 및 액세스가 얼마나 빨라질 수 있는지 상상할 수 있습니다.

관련된: 모든 프로그래머가 알아야 할 13가지 가장 중요한 SQL 명령





데이터베이스 인덱스에 대한 다양한 파일 구성 방법

인덱싱은 사용되는 파일 구성 메커니즘에 크게 의존합니다. 일반적으로 데이터베이스 인덱싱에서 데이터를 저장하는 데 사용되는 파일 구성 방법에는 두 가지 유형이 있습니다. 그것들은 아래에서 논의됩니다:

1. 정렬된 인덱스 파일: 이것은 인덱스 데이터를 저장하는 전통적인 방법입니다. 이 방법에서는 키 값이 특정 순서로 정렬됩니다. 정렬된 인덱스 파일의 데이터는 두 가지 방법으로 저장할 수 있습니다.

  • 희소 색인: 이 유형의 인덱싱에서는 각 레코드에 대해 인덱스 항목이 생성됩니다.
  • 조밀한 색인: 밀집 인덱싱에서는 일부 레코드에 대해 인덱스 항목이 생성됩니다. 이 방법으로 레코드를 찾으려면 먼저 찾고 있는 검색 키 값보다 작거나 같은 색인 항목에서 가장 중요한 검색 키 값을 찾아야 합니다.

2. 해시 파일 구성: 이 파일 구성 방법에서 해시 함수는 레코드가 저장되는 위치 또는 디스크 블록을 결정합니다.

데이터베이스 인덱싱 유형

데이터베이스 인덱싱에는 일반적으로 세 가지 방법이 있습니다. 그들은:

  • 클러스터형 인덱싱
  • 클러스터되지 않은 인덱싱
  • 다단계 인덱싱

1. 클러스터링된 인덱싱

클러스터형 인덱싱에서 하나의 단일 파일은 두 개 이상의 데이터 레코드를 저장할 수 있습니다. 시스템은 포인터가 아닌 클러스터형 인덱싱에서 실제 데이터를 유지합니다. 검색은 모든 관련 데이터를 같은 위치에 저장하므로 클러스터형 인덱싱을 사용하면 비용 효율적입니다.

내 삼성 휴대폰에서 내 컴퓨터로 사진을 다운로드하려면 어떻게 합니까?

클러스터링 인덱스는 정렬된 데이터 파일을 사용하여 자체를 정의합니다. 또한 이러한 유형의 인덱싱에서는 여러 데이터베이스 테이블을 조인하는 것이 매우 일반적입니다.

각 키에 대해 고유하지 않은 기본이 아닌 열을 기반으로 인덱스를 생성하는 것도 가능합니다. 이러한 경우 여러 열을 결합하여 클러스터형 인덱스에 대한 고유 키 값을 형성합니다.

따라서 클러스터링 인덱스는 유사한 데이터 유형을 그룹화하고 이에 대한 인덱스를 생성하는 곳입니다.

예시: 10개의 다른 부서에 1,000명 이상의 직원이 있는 회사가 있다고 가정합니다. 이 경우 회사는 DBMS에 클러스터링 인덱싱을 만들어 같은 부서에서 일하는 직원을 인덱싱해야 합니다.

동일한 부서에서 근무하는 직원이 있는 각 클러스터는 단일 클러스터로 정의되며 인덱스의 데이터 포인터는 클러스터를 전체 엔터티로 참조합니다.

관련된: SQL 데이터베이스의 외래 키는 무엇입니까?

2. 클러스터되지 않은 인덱싱

클러스터되지 않은 인덱싱은 인덱스 행의 순서가 원본 데이터가 물리적으로 저장되는 방식과 동일하지 않은 인덱싱 유형을 나타냅니다. 대신 클러스터되지 않은 인덱스는 데이터베이스의 데이터 저장소를 가리킵니다.

예시: 클러스터되지 않은 인덱싱은 순서가 지정된 목차 페이지가 있는 책과 유사합니다. 여기서 데이터 포인터 또는 참조는 알파벳순으로 정렬된 목차 페이지이고 실제 데이터는 책 페이지의 정보입니다. 목차 페이지는 책 페이지의 정보를 순서대로 저장하지 않습니다.

3. 다단계 인덱싱

다단계 인덱싱은 인덱스의 수가 매우 많아 기본 인덱스를 주 메모리에 저장할 수 없을 때 사용됩니다. 아시다시피 데이터베이스 인덱스는 검색 키와 데이터 포인터로 구성됩니다. 데이터베이스의 크기가 증가하면 인덱스의 수도 증가합니다.

그러나 빠른 검색을 위해서는 인덱스 레코드를 메모리에 보관해야 합니다. 인덱스 번호가 높을 때 단일 수준 인덱스를 사용하면 크기와 다중 액세스로 인해 해당 인덱스를 메모리에 저장하지 않을 것입니다.

여기에서 다단계 인덱싱이 작동합니다. 이 기술은 단일 수준 인덱스를 여러 개의 작은 블록으로 나눕니다. 분해 후 외부 수준 블록은 주 메모리에 쉽게 저장할 수 있을 정도로 작아집니다.

관련된: Java로 MySQL 데이터베이스에 연결하는 방법

SQL 인덱스 조각화란 무엇입니까?

인덱스 페이지의 순서가 데이터 파일의 물리적 순서와 일치하지 않으면 SQL 인덱스 조각화가 발생합니다. 처음에는 모든 SQL 인덱스가 조각화되지 않은 상태로 존재하지만 데이터베이스(데이터 삽입/삭제/변경)를 반복적으로 사용하다 보면 조각화가 발생할 수 있습니다.

데이터베이스 조각화 외에도 데이터베이스는 데이터베이스 손상과 같은 다른 중요한 문제에 직면할 수도 있습니다. 데이터 손실 및 웹 사이트 손상으로 이어질 수 있습니다. 웹사이트로 비즈니스를 하는 경우 치명적인 타격을 입을 수 있습니다.

공유하다 공유하다 트위터 이메일 SQL Server 데이터가 손상되었습니까? SQL Recovery Toolbox로 복구 시도

SQL Server용 Recovery Toolbox는 모든 버전에서 MS SQL Server의 손상된 MDF 파일을 수정하는 데 도움이 됩니다.

Wi-Fi를 사용하려면 인터넷 제공업체가 있어야 하나요?
다음 읽기 관련 항목
  • 프로그램 작성
  • SQL
  • 데이터 분석
  • 데이터 베이스
저자 소개 자디드 A. 파월(16개 기사 게재)

Zadhid Powell은 글쓰기를 시작하기 위해 코딩을 포기한 컴퓨터 엔지니어입니다! 또한 그는 디지털 마케터, 기술 애호가, SaaS 전문가, 독자 및 소프트웨어 트렌드의 열렬한 추종자입니다. 종종 기타로 시내 클럽을 흔들거나 해저 다이빙을 조사하는 것을 볼 수 있습니다.

자디드 A. 파월이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.