-
DATABASE에서 쿼리가 수행되는 전체 과정DevOps 2025. 3. 25. 08:17728x90
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'DevOps' 카테고리의 다른 글
Elasticsearch의 클러스터, 노드, 샤드, 리플리카의 개념 (0) 2025.03.25 Elasticsearch와 OpenSearch의 차이점 (0) 2025.03.25 ElasticSearch vs. OpenSearch (0) 2025.03.23 HA Proxy와 Nginx 비교 (0) 2025.03.23 Redis는 스토리지 공간 사용 용도 (0) 2025.03.23 - 무엇을 하나요?