timing_clock_source
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 19 | auto | superuser | enum |
시간 측정에 OS system clock을 쓸지 CPU 전용 명령을 쓸지 선택한다. PostgreSQL 19(beta)에서 추가된 파라미터로, 기본값은 auto다.
값은 세 가지다. auto는 지원되는 x86-64 CPU에서 TSC clock source를 자동 선택하고, 아니면 OS system clock을 쓴다. system은 항상 OS system clock으로 측정하고, tsc는 x86-64의 RDTSC/RDTSCP 같은 CPU 명령으로 측정한다. TSC(Time-Stamp Counter) clock source는 OS clock을 읽는 것보다 오버헤드가 낮아, EXPLAIN ANALYZE처럼 시간 측정이 잦은 작업에서 실제 실행 시간 위에 얹히는 측정 오차를 줄여준다. 더 높은 정밀도가 필요한 측정에는 CPU 명령 재배치로 인한 부정확성을 피하는 RDTSCP 명령이 쓰인다.
오래된 x86-64 CPU나 다른 아키텍처에서는 TSC clock source가 지원되지 않으며, TSC를 에뮬레이션하는 시스템에서는 system clock보다 느릴 수 있어 권장되지 않는다. superuser만 변경할 수 있고, 쿼리 실행 중에 바꾸면 구간 시간이 크게 튀거나 음수로 나올 수 있으므로 피해야 한다.
운영 노트: 어느 clock source가 적합한지 애매하면
pg_test_timing 유틸리티로 TSC 가용성과 측정 오버헤드를 먼저 확인한다. 가상화 환경은 TSC가 에뮬레이션일 수 있으니 특히 확인이 필요하다.출처: PostgreSQL 19 문서