transaction_timeout
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 17 | — | user | integer |
| 18 | — | user | integer |
| 19 | — | user | integer |
transaction 하나에 지정한 시간 이상 머무는 세션을 종료시킨다.
제한은 BEGIN으로 시작한 명시적 transaction과 statement 하나에 대응해 암묵적으로 시작되는 transaction 모두에 적용된다. 단위 없이 값을 주면 밀리초로 해석하며, 0(기본값)이면 비활성이다. statement 하나만 취소하는 statement_timeout과 달리 세션 자체를 종료한다는 점이 다르다. transaction_timeout이 idle_in_transaction_session_timeout이나 statement_timeout보다 짧거나 같으면 더 긴 쪽 timeout은 무시된다. prepared transaction에는 적용되지 않으며, postgresql.conf에서 전역으로 설정하는 것은 모든 세션에 영향을 주므로 권장하지 않는다.
운영 노트:
statement_timeout은 개별 쿼리를, idle_in_transaction_session_timeout은 transaction 안에서 노는 시간을 제한하지만, 짧은 쿼리를 계속 이어가며 transaction을 오래 붙들고 있는 세션은 둘 다 잡지 못한다. transaction_timeout은 그 빈틈을 메워, 오래 열린 transaction이 vacuum을 방해하고 bloat를 키우는 상황을 차단한다.출처: PostgreSQL 18 문서