Database

[Database] 인덱스

Ocean_ 2023. 2. 8. 18:05

DB 물리적 저장

실제 데이터 저장

  • 보조기억장치

가장 많이 사용되는 장치

  • 하드디스크
  • 데이터를 읽을때 액세스 암이 이동하는시간, 주기억장치로 읽어오는 시간에 영향을 받음

액세스 시간

액세스 시간 = SEEK TIME + ROTATIONAL DELAY + TRANSFER TIME

요청 ~ 주기억장치로 로드되는 시간

 

Client Connectors

  • mysql 서버 접근을 위해 App에서 사용하는 것

Connection Pool

  • Client 를 sql 연결

Pluggable Storage Engines

  • 데이터 저장 & 추출 (mylSAM,InnoDB) 사용

InnoDB 엔진 DB 파일

데이터 파일

  • 사용자 데이터와 개체를 저장
  • 테이블과 인덱스로 구성
  • 확장자는 *.ibd

폼파일

  • 테이블에 대한 각종 정보와 테이블 구성 필드, 데이터타입 정보 저장
  • db구조등의 변경사항있을때 자동으로 업데이트 됨

인덱스와 B-tree

인덱스

  • 도서의 색인이나 사전과 같이 데이터를 쉽고 빠르게 찾을수있도록 만든 데이터 구조

B-TREE

  • balanced & 검색시간이 작다

인덱스의 특징

  • 인덱스는 테이블에서 한 개 이상의 속성을 이용하여 생성함
  • 빠른 검색과 함께 효율적 레코드 접근 가능
  • 순서대로 정렬된 속성,데이터 위치만 보유해서 테이블보다 작은 공간 차지
  • 저장 값들은 테이블의 부분집합
  • 일반적으로 B-tree 형태의 구조를 가짐
  • 데이터 수정,삭제 변경 발생 시 인덱스 재구성 필요

한개이상속성, 효율적레코드접근,작은공간,부분집합,btree, 인덱스재구성

 

B TREE B+ TREE
키값 중복 X 가지, 리프 키값이 중복 O
순차탐색 X 순차탐색 O
가지,리프 모두 DATA 리프만 DATA
검색만 가지노드 모두 INDEX
  검색 + DATA처리

 

 

mysql 인덱스는 클러스터,보조 인덱스로 나뉘며 모두 b-tree 인덱스 기본

 

클러스터 인덱스

  • TABLE 생성 시 DBMS가 무조건 만듦
  • 키 값에 의한 동등 및 범위검색에 유리 → 키 값 검색 유리
  • 범위검색 유리 → 정렬되어있어서 용이
  • 행 데이터를 인덱스로 지정한 열에 맞춰 자동 정렬
  • 인덱스 자체에 data가 저장되어 있음
  • 테이블당 1개

SECONDARY 인덱스

빈번하게 처리되는 질의문에서 WHERE 절 이후 조건을 인덱스화

DATA를 접근할 수 있는 포인터들이 저장되어있다.

 

클러스터 인덱스

  • 기본키에 대하여 클러스터 인덱스를 생성한다
  • 기본키 지정없으면 UNIQUE 속성에 대해 클러스터 인덱스 생성
  • 기본키,UNIQUE 없으면 자체 생성 행번호로 클러스터 인덱스 생성

보조 인덱스

  • 클러스터 인덱스가 아닌 모든 인덱스는 보조 인덱스
  • 보조인덱스 각 레코드는 속성과 키본키 속성값을 갖고 있다.
  • 보조인덱스 검색해서 기본키 속성 찾은 후 클러스터 인덱스로 가 해당 레코드를 찾는다.
  • 특정키 값 찾는 검색은 성능 보장하지만, 범위검색은 보장 못함

 


숭실대학교 Database 강의를 수강 후 정리하였습니다.