2.1 인덱스 구조 및 탐색

개발자 로그·2021년 5월 25일
0

친절한SQL튜닝

목록 보기
5/15
post-thumbnail

데이터베이스 테이블에서 데이터 찾는 법

  1. 테이블 전체 스캔
  2. 인덱스 이용

인덱스 튜닝의 두 가지 핵심요소

인덱스 ⇒ 큰 테이블에서 소량 데이터를 검색할 때 사용 ( ex : OLTP... )

  1. 인덱스 스캔 효율화 튜닝
  2. ⭐랜덤 액세스 최소화 튜닝

SQL 튜닝은 랜덤 I/O와의 전쟁이다

DB 성능이 느린 이유

디스크 I/O (특히 랜덤 I/O)가 많이 발생하면 느림


인덱스 구조

  • 인덱스는 정렬되어 있는 구조이므로 번위 스캔 ( Range Scan )이 가능하다
  • DBMS는 일반적으로 B-Tree 인덱스를 사용한다
  • 루트와 브랜치 블록에있는 각 레코드는 하위 블록에 대한 주소값을 갖으며 키값은 하위 블록에 저장된 키값의 범위를 나타낸다
  • 리프 블록에 저장된 각 레코드는 키값 순으로 정렬되어 있을 뿐 아니라, 테이블 레코드를 가리키는 주소값 (RowID)를 갖는다. 인덱스 키값이 같으면 RowID순으로 정렬된다.

인덱스 탐색 과정

  • 수직적 탐색 : 인덱스 스캔 시작지점을 찾는 과정 ( 조건에 만족하는 첫번째 레코드를 찾는 과정 )
  • 수평적 탐색 : 본격적으로 데이터를 찾는 과정
    ⇒ 인덱스 리프 블록 끼리는 서로 앞뒤 블록에 대한 주소값을 가지고 있는 양방향 연결리스트 ( double linked list ) 구조이다.
profile
성장하는 개발자

0개의 댓글

관련 채용 정보