본문 바로가기

PostgreSQL

JIT(Just-in-Time Compilation)

사용 목적

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;

 

참고

 

 

 

'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