DBA/Postgresql

pg_hint_plan

da-dba 2024. 9. 3. 10:29

Scan

Hint List Description Format
SeqScan 테이블 순차 스캔을 하도록 적용 SeqScan(Table)
TidScan 테이블 TID 스캔을 하도록 적용 TidScan(Table)
IndexScan 테이블에서 특정 인덱스가 있는 경우, 인덱스 스캔을 하도록 적용.
이 때 테이블에 인덱스가 하나거나 인덱스를 특정할 필요가 없는 경우, 테이블만 작성 가능
IndexScan(Table [index])
IndexOnlyScan 테이블에서 특정 인덱스가 있는 경우, 인덱스 전용 스캔을 하도록 적용.
이 때 테이블에 인덱스가 하나거나 인덱스를 특정할 필요가 없는 경우, 테이블만 작성 가능
IndexOnlyScan(Table [index])
BitmapScan 테이블에서 특정 인덱스가 있는 경우, 비트맵 스캔을 하도록 적용.
이 때 테이블에 인덱스가 하나거나 인덱스를 특정할 필요가 없는 경우, 테이블만 작성 가능
BitmapScan(Table [index])
IndexScanRegexp 테이블에서 특정 POSIX 정규식 패턴과 일치하는 인덱스로 인덱스 스캔을 하도록 적용.
이 때 테이블에 특정 정규식 패턴이 하나거나 정규식 패턴을 특정할 필요가 없는 경우, 테이블만 작성 가능
IndexScanRegexp(Table [POSIX Regrexp..])
IndexOnlyScanRegexp 테이블에서 특정 POSIX 정규식 패턴과 일치하는 인덱스로 인덱스 전용 스캔을 하도록 적용 (9.2v 이상).
이 때 테이블에 특정 정규식 패턴이 하나거나 정규식 패턴을 특정할 필요가 없는 경우, 테이블만 작성 가능
IndexOnlyScanRegexp(Table [POSIX Regrexp..])
BitmapScanRegexp 테이블에서 특정 POSIX 정규식 패턴과 일치하는 인덱스로 비트맵 스캔을 하도록 적용.
이 때 테이블에 특정 정규식 패턴이 하나거나 정규식 패턴을 특정할 필요가 없는 경우, 테이블만 작성 가능
BitmapScanRegexp(Table [POSIX Regrexp..])
NoSeqScan 테이블에서 순차 스캔을 하지 않도록 적용 NoSeqScan(Table)
NoTidScan 테이블에서 TID 스캔을 하지 않도록 적용 NoTidScan(Table)
NoIndexScan 테이블에서 인덱스 스캔이나 인덱스 전용 스캔을 하지 않도록 적용 NoIndexScan(Table)
NoIndexOnlyScan 테이블에서 인덱스 전용 스캔을 하지 않도록 적용 NoIndexOnlyScan(Table)
NoBitmapScan 테이블에서 비트맵 스캔 하지 않도록 적용 NoBitmapScan(Table)

Join

Hint List Description Format
Leading 조인의 순서를 지정하도록 적용.
조인 방향까지 제어하려면 Format에서 괄호를 우측 (2)번으로 작성해야하고 이때 Table1이 Driving 또는 Outer Table
(1) Leading(Table Table)
(2) Leading((Table1 Table2))
NestLoop 특정 테이블이 중첩 루프(Nested Loop) 조인으로 풀리도록 적용 NestLoop(TableTable [Table..])
HashJoin 특정 테이블이 해시 조인으로 풀리도록 적용 HashJoin(Table Table [Table..])
MergeJoin 특정 테이블이 머지 조인으로 풀리도록 적용 MergeJoin(Table Table [Table..])
NoNestLoop 특정 테이블이 중첩 루프(Nested Loop) 조인으로 풀리지 않도록 적용 NoNestLoop(Table Table [Table..])
NoHashJoin 특정 테이블이 해시 조인으로 풀리지 않도록 적용 NoHashJoin(Table Table [Table..])
NoMergeJoin 특정 테이블이 머지 조인으로 풀리지 않도록 적용 NoMergeJoin(Table Table [Table..])

Behavior Control on Join

Hint List Description Format
Memoize Memoize가 활성화된 경우, 특정 테이블 간의 조인 중 최상위 조인의 결과값을 캐싱하도록 적용 Memoize(Table Table [ Table...])
NoMemoize 특정 테이블 사이의 조인에서 내부 결과를 캐싱하여 기억하는 것을 금지하도록 적용 NoMemoize(Table Table [ Table...])

Row Number Correction

Hint List Description Format
Rows 절대(#), 더하기(+), 빼기(-) 및 곱하기(*)를 이용하여 특정 테이블에 대한 조인 결과의 행 번호를 수정하도록 적용 Rows(Table Table [ Table...] correction)

Parallel Query Configuration

Hint List Description Format
Parallel 테이블 스캔에 병렬 수행을 적용 ( default : soft ) Parallel(Table <# of workers> [soft|hard])

GUC(Grand Unified Configuration) : postgresql.conf Parameter

Hint List Description Format
Set Optimizer가 실행되는 동안 SQL Plan과 관련된 GUC 매개변수 값을 Hint에 정의된 값으로 적용.
다른 Hint와 충돌한 경우 적용되지않음
Set(GUC-param value)

 

출처 : https://blog.ex-em.com/1911

'DBA > Postgresql' 카테고리의 다른 글

FILLFACTOR  (0) 2024.09.03
유휴 세션 정리  (0) 2024.08.28
테이블 정의서 추출  (0) 2024.08.07
orafce 설치 및 적용  (0) 2024.07.29
DB간 테이블 복제(실시간)  (0) 2024.07.26