CS 스터디 10주차

Park Jae Hong·2023년 8월 24일
0

인덱스란 무엇인가요? 어떻게 동작 하나요?

인덱스(Index)는 데이터베이스에서 데이터의 검색 속도를 향상시키기 위해 사용되는 데이터 구조입니다.
데이터베이스 내의 테이블에서 특정 열(칼럼)을 기반으로 생성되며, 이 열의 값을 기준으로 데이터에 대한 빠른 액세스를 가능하게 합니다.
즉, 인덱스를 사용하면 DBMS은 전체 테이블을 검색하지 않고도 원하는 데이터를 빠르게 찾을 수 있습니다.

인덱스의 작동 방식은 다음과 같습니다

  • 인덱스 생성
    : 데이터베이스 관리자가 특정 열을 기반으로 인덱스를 생성합니다.
    이 열은 주로 검색이나 조인과 같은 연산에서 자주 사용되는 열로 선택됩니다.

  • 인덱스 구조 생성
    : 선택한 열의 각 값과 해당 값이 존재하는 실제 데이터 위치를 특정한 데이터 구조에 저장합니다.

  • 데이터 변경 시 인덱스 업데이트
    : 데이터가 추가, 수정 또는 삭제될 때, 해당 데이터의 인덱스 역시 업데이트되어야 합니다.
    이는 추가적인 오버헤드를 발생시키지만, 데이터의 검색 속도 향상을 위해 필수적입니다.

  • 데이터 검색
    : 사용자가 데이터를 검색하거나 조회할 때, DBMS는 인덱스를 사용하여 원하는 데이터의 위치를 빠르게 찾아냅니다. 인덱스를 통해 데이터의 위치를 찾은 후에는 해당 데이터에 대한 실제 디스크 액세스를 수행하여 데이터를 가져옵니다.

인덱스의 알고리즘에는 어떤 것들이 있나요?

  • B-트리 인덱스
    : B-트리는 데이터베이스에서 가장 일반적으로 사용되는 인덱스 구조 중 하나입니다.
    데이터를 정렬된 상태로 유지하면서 효율적인 검색, 삽입, 삭제를 지원합니다.
    B-트리는 여러 레벨의 노드를 가지며, 루트에서부터 리프 노드까지 내려가면서 검색 작업을 수행합니다.

  • B+트리 인덱스
    : B+트리는 B-트리의 확장된 형태로, 주로 디스크 기반의 데이터베이스 시스템에서 사용됩니다.
    B+트리는 데이터를 리프 노드에만 저장하고 내부 노드는 인덱스 역할만 수행하여 데이터에 대한 효율적인 범위 검색을 지원합니다.

  • 해시 인덱스
    : 해시 함수를 사용하여 각 인덱스 키를 해시값으로 변환한 다음, 해당 해시값을 기반으로 데이터의 위치를 찾습니다.
    해시 인덱스는 정확한 값으로 검색하는 데 매우 효과적이지만, 범위 검색이나 정렬된 결과를 얻는 데는 적합하지 않을 수 있습니다.

  • 클러스터드 인덱스
    : 클러스터드 인덱스는 테이블의 레코드와 인덱스가 함께 저장되는 방식입니다.
    테이블의 주요 키를 기준으로 정렬된 형태로 저장되므로, 주로 범위 검색에 효과적입니다.

  • 비클러스터드 인덱스
    : 비클러스터드 인덱스는 인덱스 키와 해당 키가 가리키는 레코드의 실제 데이터 위치가 분리되어 저장되는 방식입니다.
    이를 통해 하나의 테이블에 여러 개의 비클러스터드 인덱스를 생성할 수 있습니다.

  • R-트리 인덱스
    : R-트리는 공간 데이터를 위한 인덱스 구조로, 지리 정보 시스템(GIS)과 같은 분야에서 자주 사용됩니다. 공간 상에서 범위 검색과 공간 연산을 지원합니다.

  • 전문 텍스트 인덱스
    : 전문 텍스트 인덱스는 텍스트 데이터에서 특정 단어나 문구를 검색하는 데 특화된 인덱스입니다.
    전문 텍스트 검색 엔진은 단어의 형태소 분석, 불용어 처리 등을 수행하여 정확한 텍스트 검색을 가능하게 합니다.

Table Full Scan과 Index Range Scan 을 설명해주세요.

Table Full Scan과 Index Range Scan은 데이터베이스에서 데이터를 읽어오는 두 가지 기본적인 방법입니다. 각각의 방법은 데이터 액세스에 있어서 다른 방식을 사용하며, 특정 상황에 따라 선택되어야 합니다.

Table Full Scan (전체 스캔)

: Table Full Scan은 데이터베이스에서 특정 조건 없이 테이블의 모든 레코드를 처음부터 끝까지 읽어오는 방법입니다. 이는 주로 작은 테이블이나 특정 조건 없이 전체 데이터를 처리할 때 사용됩니다. 모든 레코드를 순차적으로 읽기 때문에 I/O 비용이 비교적 크게 발생할 수 있습니다.

  • 장점
    데이터가 무작위로 분포되어 있을 때 유용할 수 있습니다.
  • 단점
    :대량의 데이터가 있는 경우에는 비효율적일 수 있습니다.
    특정 조건으로 필터링된 데이터만 필요한 경우에는 모든 레코드를 검사하기 때문에 성능 저하가 발생할 수 있습니다.

Index Range Scan (인덱스 범위 스캔):

Index Range Scan은 인덱스를 이용하여 특정 조건에 맞는 데이터 범위를 검색하는 방법입니다.
인덱스가 특정 열을 정렬된 상태로 유지하고 있기 때문에 원하는 조건에 해당하는 범위를 빠르게 찾아낼 수 있습니다.

  • 장점
    대량의 데이터에서도 빠른 검색을 지원합니다.
    필요한 데이터만을 추출할 수 있어 I/O 비용이 줄어듭니다.
    정렬된 데이터를 반환하기 때문에 정렬 작업이 필요 없습니다.

  • 단점
    인덱스를 이용하는 만큼 약간의 추가적인 오버헤드가 발생할 수 있습니다.
    인덱스가 존재하지 않는 경우에는 사용할 수 없습니다.

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글