인성장

[PostgreSQL] SQL 처리 과정 (6) 본문

PostgreSQL/Architecture

[PostgreSQL] SQL 처리 과정 (6)

인성장 2023. 11. 29. 13:42

 

PostgreSQL SQL 처리 과정

 

 

PostgreSQL SQL 문장 처리과정은 Oracle 의 SQL 문장 처리 과정과 유사합니다. 간단하게 요약하면 클라이언트로부터 SQL문을 전달받으면 문법체크, 의미분석, 최적의 실행계획 생성, 실행계획에 따른 쿼리 수행, 클라이언트에게 결과값 반환 순입니다.

 

 

1. Parser

Parsing 단계는 SQL 처리과정의 첫 번째 단계로 쿼리문을 분석하여 Syntax Error(문법 오류 - select, from, where 등과 같은 정해져있는 단어들의 오타가 없는지, 존재하는 문법인지에 대한 것)를 확인하고 Parse tree를 생성합니다. Parse tree는 select 절, from 절, where 절 요소 별로 구분해놓은 것이라 이해하면 됩니다.

 

2. Analyzer

Parser 단계에서 생성된 Parse tree의 의미를 분석하여 Query tree를 생성합니다. SQL이 참조하는 테이블이 존재하는지, 컬럼이 존재하는지와 같은 테이블, 컬럼, 연산자의 유효성 등을 이해하기 위한 의미분석(Sementic)과정을 System Catalog 조회를 통해 수행합니다. 그리고 Parse tree에 해당 내용을 추가하여 Query tree를 생성합니다.

 

3. Rewriter

Analyzer에서 생성된 Query tree는 Planner에 전달되기 전, Rewrite 과정을 거치게 됩니다. Rewriter는 사용자가 Rule System에 저장된 규칙을 기반으로 Query Tree를 수정합니다.

여기서, Query Rewrite나 최적화가 필요하지 않은 Simple Query의 경우 바로 Executor 단계로 넘어갑니다.

* Simple Query : create, drop, alter, vacuum 등의 DDL,DCL문

* Complex Query : select, update,delete 등 과 같은 DML문

 

4. Planner (Optimizer)

Analyzer와 Rewriter를 거친 Query tree는 Planner에 전달됩니다. Planner는 쿼리가 요구하는 데이터의 명세인 Query Tree를 기반으로 해당 데이터를 찾고, 가공하기 위해 최적의 실행 계획을 생성합니다. 선택 가능한 모든 계획을 만들어 각 계획의 비용을 계산하며 그 중 가장 적은 비용을 갖는 계획을 선택합니다.

* 비용은 System Catalog에 저장된 통계정보를 기반으로 합니다. (pg_class, pg_statistics)

 

4. Executor

마지막으로 실행계획에 따라 Query를 수행하고 그 결과를 클라이언트에 전달합니다.

 

 

참조사이트

https://blog.ex-em.com/1653

 

DB 인사이드 | PostgreSQL Architecture - 5. SQL 처리 과정

PostgreSQL SQL 처리과정 본 문서에서는 PostgreSQL의 SQL처리과정에 대해 알아보도록 하겠습니다.postgres 프로세스는 Client로부터 SQL(Query string)을 전달받으면 아래와 같은 5개의 과정을 거쳐 SQL을 처리

blog.ex-em.com

 

 

반응형

'PostgreSQL > Architecture' 카테고리의 다른 글

[PostgreSQL] Vacuum (7)  (0) 2023.11.29
[PostgreSQL] 동작 원리 (5)  (2) 2023.11.28
[PostgreSQL] Memory 구조 (4)  (0) 2023.11.28
[PostgreSQL] Process 구조 (3)  (0) 2023.11.28
[PostgreSQL] Data Directory 구조 (2)  (0) 2023.11.28