[데이터베이스] Query Processing 기본 개념

November 21, 2023


Query processing

Query processing1

DBMS의 질의 처리는 일반적으로 다음과 같은 세 단계로 구성됩니다.

  1. Parsing & Translation

    Parsing: 사용자로부터 입력된 쿼리문을 해석하고 문법적으로 올바른지 확인하는 단계

    Translation: 구문 분석된 쿼리를 내부적으로 사용하는 형식으로 변환

    SQL 쿼리를 내부적인 데이터베이스 시스템이나 엔진이 이해할 수 있는 형태로 변환

    관계대수식 또는 기타 형태의 중간 표현으로 나타낼 수 있습니다.

  2. Optimizer

    쿼리 실행 비용을 분석하여, 변환된 쿼리 또는 관계대수식을 실행하는 데 효율적인 방법을 찾는 단계

    쿼리의 실행 계획을 결정하고 가장 적절하게 수행할 수 있게 인덱스 사용, 조인 순서 변경 등과 같은 다양한 방법중 비용이 적은 방법을 추론(estimate)합니다.

  3. Evaluation

    최적화된 실행 계획을 기반으로 실제로 쿼리를 실행하고 결과를 생성하는 단계입니다. 데이터베이스 시스템은 최적화된 계획에 따라 데이터를 액세스하고 처리하여 사용자가 요청한 정보를 생성합니다.

질의 실행 비용을 결정 요인들

  • 디스크 액세스 시간
  • 질의를 실행하기 위한 CPU 시간
  • 통신 시간 (분산/병렬 질의)

가정

  • 디스크 액세스 시간이 가장 중요한 요인
  • 각 디스크 블럭을 액세스하는 시간은 동일
  • 질의의 최종 결과를 디스크에 기록하는 시간은 고려하지 않는다.

Query Optimization

정의

주어진 질의에 대한 최선의 실행 방법을 발견

데이터 모델에 따른 Query Optimization

Catalog Information

Relation의 통계 정보를 저장

속성 설명
nᵣ # of records in r
bᵣ # of blocks containing records of r
sᵣ Size of a record of r in bytes
fᵣ Blocking factor of r (bᵣ = 〈nᵣ/fᵣ〉)
V(A, r) # of distinct values that appear in r for 속성 A
If A is a key for r, V(A, r) = nᵣ
SC(A, r) Selection cardinality of 속성 A of r
SC(A, r) = nᵣ / V(A, r)

Information about Index

속성 설명
fᵢ The average fan-out of internal nodes of index i
HTᵢ The height of index i
B+ Tree HTi = 〈logfi(V(A, r))〉 for B+ Tree indices
HashIndex HTi = 1 for Hash Indices
LBᵢ # of blocks at the leaf level of index i

Selection

Selection 질의 처리 정리

Join

Join 질의 처리 정리


Profile picture

이재원

이해하기 쉬운 코드를 작성하려 고민합니다.


© 2024 Won's blog Built with Gatsby