geqo_seed
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | user | string |
| 15 | — | user | string |
| 16 | — | user | string |
| 17 | — | user | string |
| 18 | — | user | string |
| 19 | — | user | string |
GEQO가 join 순서 탐색 공간에서 random path를 고를 때 사용하는 난수 생성기의 초기값을 정한다. 0부터 1 사이의 값이며 기본값은 0이다.
PostgreSQL은 FROM 항목이 많은 쿼리에서 가능한 join 순서를 전부 따져보는 대신 genetic query optimizer(GEQO)를 사용한다. GEQO는 유전 알고리즘으로 join 순서 탐색 공간을 확률적으로 탐색해, 최적 plan 보장을 포기하는 대신 planning 시간을 억제한다. 확률적 탐색이므로 어떤 경로를 탐색하는지는 난수에 좌우되는데, 그 난수의 seed가 이 파라미터다. 값을 바꾸면 탐색되는 join 경로 집합이 달라져 더 좋은 plan이 나올 수도, 더 나쁜 plan이 나올 수도 있다.
seed가 고정되어 있으므로 같은 쿼리·같은 설정이라면 GEQO 결과는 재현 가능하다. GEQO 구간의 쿼리 plan이 아쉬울 때 seed를 몇 가지 바꿔가며 더 나은 plan이 잡히는지 실험해 볼 수 있다.
출처: PostgreSQL 18 문서