transaction_timeout

用于事务超时的一个GUC
此条目涉及PostgreSQL的一个功能,该功能是PostgreSQL 17的一部分,预计将于2024年底发布。

transaction_timeout 是一个用于终止持续时间超过指定时间的配置参数

transaction_timeoutPostgreSQL 17中添加。

用法

如果idle_in_transaction_session_timeout 和/或 statement_timeout 以及 transaction_timeout 都已设置,则最短的超时时间将覆盖其他设置。

不建议在postgresql.conf中设置transaction_timeout

默认值

的默认值为transaction_timeout0未设置超时)。

按PostgreSQL版本分列详细信息

transaction_timeout (PostgreSQL 17)

设置 0
单位 毫秒
类别 客户端连接默认值/语句行为
简短描述 设置会话中任何事务(非准备事务)允许的最大持续时间。
额外描述 值为0将关闭超时。
上下文 用户
变量类型 整数
来源 默认
最小值 0
最大值 2147483647
枚举值  
启动值 0
重置值 0
源文件  
源代码行  
待重启

文档transaction_timeout

变更历史

示例

transaction_timeout的基本用法示例

postgres=# SET transaction_timeout = '1s';
SET

postgres=# \timing 
Timing is on.

postgres=# SELECT pg_sleep(2);
FATAL:  terminating connection due to transaction timeout
server closed the connection unexpectedly
	This probably means the server terminated abnormally
	before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
Time: 1017.288 ms (00:01.017)

前面超时事件的相应日志条目为

[2024-02-16 16:54:27 UTC] psql postgres postgres LOG:  00000: statement: SELECT pg_sleep(2);
[2024-02-16 16:54:28 UTC] psql postgres postgres FATAL:  25P04: terminating connection due to transaction timeout
[2024-02-16 16:54:28 UTC] psql postgres postgres STATEMENT:  SELECT pg_sleep(2);
[2024-02-16 16:54:28 UTC] psql postgres postgres LOG:  00000: disconnection: session time: 0:00:18.413 user=postgres database=postgres host=127.0.0.1 port=54480

分类

GUC配置项事务

另请参阅

idle_session_timeoutidle_in_transaction_session_timeoutstatement_timeout

反馈

提交任何关于“transaction_timeout”的评论、建议或更正 此处