jit
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | on | user | boolean |
| 15 | on | user | boolean |
| 16 | on | user | boolean |
| 17 | on | user | boolean |
| 18 | on | user | boolean |
| 19 | off | user | boolean |
PostgreSQL이 JIT compilation을 사용할 수 있는지를 정한다. 기본값은 on이다.
JIT compilation은 WHERE 절이나 target list의 expression 평가처럼 쿼리 실행 중 반복 수행되는 코드를 실행 시점에 네이티브 코드로 컴파일해 가속하는 기능이다. LLVM 지원을 포함해 빌드된 서버에서만 동작하며, 그렇지 않은 빌드에서는 이 값이 on이어도 아무 일도 일어나지 않는다.
on이라고 모든 쿼리에 JIT가 적용되는 것은 아니다. 컴파일 자체에 시간이 들기 때문에, 추정 비용이 충분히 큰 쿼리에만 세 임계값을 따라 단계적으로 적용된다. 추정 비용이 jit_above_cost(기본 100000)를 넘으면 JIT compilation이 켜지고, jit_inline_above_cost(기본 500000)를 넘으면 함수·연산자 inlining을, jit_optimize_above_cost(기본 500000)를 넘으면 비용이 큰 최적화 패스까지 수행한다. 쿼리가 비쌀수록 컴파일에 더 많은 시간을 투자하는 구조다.
운영 노트: JIT는 오래 도는 분석성 쿼리에는 이득이지만, 짧은 쿼리가 대량으로 흐르는 OLTP 워크로드에서는 컴파일 오버헤드가 오히려 손해가 될 수 있다.
EXPLAIN (ANALYZE) 출력의 JIT 섹션에서 컴파일 시간을 확인하고, 워크로드와 맞지 않으면 jit를 끄거나 임계값을 올린다.출처: PostgreSQL 18 문서