此条目涉及PostgreSQL的一个功能,该功能是PostgreSQL 17的一部分,预计将于2024年底发布。
transaction_timeout
是一个用于终止持续时间超过指定时间的配置参数。
transaction_timeout
在PostgreSQL 17中添加。
用法
如果idle_in_transaction_session_timeout
和/或 statement_timeout
以及 transaction_timeout
都已设置,则最短的超时时间将覆盖其他设置。
不建议在postgresql.conf
中设置transaction_timeout
。
默认值
的默认值为transaction_timeout
:0
(未设置超时)。
按PostgreSQL版本分列详细信息
transaction_timeout (PostgreSQL 17)
设置 | 0 |
单位 | 毫秒 |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置会话中任何事务(非准备事务)允许的最大持续时间。 |
额外描述 | 值为0将关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行 | |
待重启 | 否 |
变更历史
- PostgreSQL 17
- 添加(初始提交51efe38c)
示例
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
参考文献
- PostgreSQL 17文档: transaction_timeout
有用链接
- PostgreSQL 17: transaction_timeout - Daniel Westermann / dbi services于2024年2月的博客文章