사용 목적
JIT은 쿼리 실행 중 일부 계산을 "컴파일"해서 CPU가 더 빠르게 처리할 수 있도록 하는 기술
- 원래는 SQL 쿼리를 실행할 때, PostgreSQL은 모든 계산을 인터프리터 방식으로 처리
- JIT을 사용하면 계산식(expressions)이나 반복문(loop), 함수 호출 등을 머신 코드로 컴파일해서 실행하게 됨.
- 즉, 반복 계산이 많은 복잡한 쿼리일수록 JIT의 효과가 커짐.
유용한 상황
- 대량의 데이터를 처리하는 복잡한 SELECT, JOIN, 집계 함수 등
- 복잡한 WHERE 조건식이나 함수 호출이 많은 쿼리
- 반복적인 연산이 많은 ANALYTICS, OLAP 환경
유용하지 않은 상황
- 단순 쿼리 (예: SELECT * FROM small_table)
- 결과가 몇 줄 안 나오는 쿼리
- JIT 오버헤드(컴파일 시간)가 처리 시간보다 더 클 경우
JIT을 사용하려면?
- PostgreSQL 빌드 시 LLVM 활성화 필요( --with-llvm)
- postgresql.conf에서 jit = on으로 설정 필요
- 아래 파라미터 설정값의 조건을 충족해야 JIT 사용함.
- jit_above_cost 이 비용 이상이면 JIT 사용 시도
- jit_inline_above_cost 이 비용 이상이면 표현식 인라인 수행
- jit_optimize_above_cost 이 비용 이상이면 최적화 적용
예시
아래 쿼리에서 sum, WHERE expensive_function() 등이 있다면 JIT을 활용해 expensive_function() 계산을 컴파일해서 훨씬 빠르게 수행 가능.
EXPLAIN (ANALYZE, VERBOSE) SELECT sum(value) FROM big_table WHERE expensive_function(col) > 0;
참고
- https://www.postgresql.org/docs/17/jit.html
- https://www.postgresql.org/docs/17/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS
'PostgreSQL' 카테고리의 다른 글
| patroni 관련 간단 용어 정리 (0) | 2025.07.11 |
|---|---|
| Serial Types 과 Identity Columns (0) | 2025.07.07 |
| PREPARE statement (1) | 2025.07.07 |
| 24. PostgreSQL - Temporary Files (4) | 2024.12.30 |
| 23. PostgreSQL - planner의 cost 계산 (1) | 2024.12.29 |