DB Block IO (Single vs Multi)

강우엉·2024년 1월 24일
0

study

목록 보기
42/44

데이터베이스에서 쿼리가 요구하는 데이터를 찾는 방법은 여러가지가 있다.

  • Table Full Scan(Sequential Scan)
  • Index Range Scan
  • Index Full Scan
  • Index Unique Scan
  • Index Skip Scan
  • Index Fast Full Scan

💡 Block IO란?

데이터베이스는 기본적으로 데이터를 Disk에 저장한다. 데이터가 필요해지면 버퍼캐시로 데이터를 가져오는데 이렇게 가져오는 행위를 Disk IO라고 한다.

이 때 가져오는 데이터의 최소 단위를 Block IO라고 하고 하나의 Block만 가져오는것을 Single Block IO, 여러개의 Block을 가져오는것을 Multi Block IO라고 한다.

💡 Single Block IO의 한계

기본적으로 인덱스는 논리적 구조의 형태를 가진다.
하지만 Block의 개념에서는 인덱스를 사용한 데이터들이 여러개의 Block으로 나뉘어 저장되고 인덱스의 정렬된 순서와는 상관이 없어진다.

따라서 정렬된 인덱스 구조를 탐색하려면 Single Block IO 방법으로 하나씩 가져와야한다.

만약 가져와야 할 데이터가 많다면 시스템 콜이 비효율적으로 많이 필요해진다. 그래서 인덱스를 사용한 방법이 항상 빠르지 않은것이다.

💡 Index Fast Full Scan

Index Fast Full Scan이란 Multi Block IO 방법을 사용하면서 인덱스를 활용하는 방법이다.

인덱스의 정렬은 무시한채 여러 Block을 가져오는 방법이다.

원하는 데이터의 모든 칼럼이 인덱스에 존재하는 경우 활용되는 방법이다.

profile
우엉이의 코딩 성장일기💻

0개의 댓글