본문 바로가기

PostgreSQL

Parallel Processing (병렬 처리)

Parallel Processing

PostgreSQL 9.6 부터 병렬 처리를 지원한다.

병렬 처리는 Parallel Scan, Parallel Group by, Parallel Join을 지원한다.

ORACLE과 같은 생산자-소비자 모델은 아니다.

Worker 프로세스 개수 산정 방식

Worker 프로세스의 개수는 min_parallel_relation_size 파라미터값을 기준으로 산정한다.

기준 크기의 3배 단위로 1개씩 증가하며, 최대 7개이다.

Parallel Index Scan

PostgreSQL 10부터는 Parallel Index Scan 기능을 제공한다.

Parallel Index Scan 기능은 Index Full Scan 뿐만 아니라 Index Range Scan 시에도 동작한다.

1) 조건절 범위에 해당하는 "Start 리프 블록" "End 리프 블록"의 위치를 계산한다.

2) 처리 범위가 인덱스 병렬 처리를 할 정도로 큰지 확인한다. (아래 표 참조)

3) 만일 크다면, 크기에 따라서 Worker 개수를 설정한 후에, "Start" ~ "End" 범위를 나눠서 처리한다.

4) 만일 작다면, 싱글 프로세스로 처리한다.

'PostgreSQL' 카테고리의 다른 글

PostgreSQL – Grafana 연동  (0) 2021.05.31
PostgreSQL 파티션  (0) 2021.04.23
BRIN  (0) 2021.04.23
힌트의 필요성과 PG_HINT_PLAN  (1) 2021.04.23
Query Rewrite (쿼리 변환)  (0) 2021.04.23