ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DATABASE에서 쿼리가 수행되는 전체 과정
    DevOps 2025. 3. 25. 08:17
    728x90

    DATABASE에서 쿼리가 수행되는 전체 과정은 일반적으로 아래와 같은 단계로 구성됩니다. 이 흐름은 대부분의 관계형 데이터베이스(RDBMS, 예: PostgreSQL, MySQL, Oracle 등)에서 유사하게 적용됩니다.

     

    쿼리 수행 과정 전체 흐름

    [사용자 쿼리 입력]
           ↓
    1. Parsing (구문 분석)
           ↓
    2. Binding / Semantic Analysis (이름 해석 & 의미 분석)
           ↓
    3. Query Rewriting (쿼리 재작성, 옵티마이저 준비)
           ↓
    4. Planning / Optimization (실행 계획 수립)
           ↓
    5. Execution (실제 실행)
           ↓
    [결과 반환]

     

    1. Parsing (구문 분석)

    • 무엇을 하나요?
      SQL 문장을 토큰으로 쪼개고 문법적으로 맞는지 확인합니다.
    • 예시: SELECT * FROM users WHERE id = 1 → SELECT, *, FROM, users 등으로 나눔.
    • 결과물: Parse Tree (구문 트리, 추상 구문 트리(AST))

    2. Binding / Semantic Analysis (이름 해석 & 의미 분석)

    • 무엇을 하나요?
      • Parse Tree를 바탕으로 실제 테이블/컬럼 이름을 데이터베이스 스키마와 대조하여 존재하는지 확인.
      • 타입이 올바른지, 컬럼이 존재하는지 등을 확인.
    • 결과물: Validated Query Tree (의미적으로 유효한 트리)

    3. Query Rewriting (쿼리 재작성)

    • 무엇을 하나요?
      • View, Rule 등을 적용해 쿼리를 재작성함.
      • 예: SELECT * FROM view_users → SELECT * FROM (SELECT id, name FROM users WHERE is_active = true)
      • 일부 시스템에서는 쿼리 최적화를 돕기 위한 간단한 변환도 이 단계에서 수행.

    4. Planning / Optimization (실행 계획 수립 및 최적화)

    • 무엇을 하나요?
      • 여러 가능한 실행 계획(Execution Plans)을 생성함.
      • 통계 정보(인덱스 유무, 데이터 분포 등)를 바탕으로 비용(Cost)을 계산.
      • 가장 효율적인 실행 계획을 선택함.
    • 대표적인 실행 계획 요소:
      • 어떤 인덱스를 사용할지
      • 조인을 어떤 순서로 수행할지 (Nested Loop Join, Hash Join 등)
      • 테이블을 풀 스캔할지 인덱스를 이용할지 등
    • 결과물: 최종 Execution Plan

    5. Execution (실행)

    • 무엇을 하나요?
      • 최적화된 실행 계획을 바탕으로 실제 데이터를 읽고 연산 수행.
      • 디스크에서 페이지 읽기, 인덱스 탐색, 필터링, 조인, 정렬 등을 수행.
      • 결과를 사용자에게 반환.
    • 이 과정에서 디스크 I/O가 많이 일어나므로 성능에 큰 영향을 줌.
    728x90
Designed by Tistory.