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 18)
设置 | 0 |
单位 | 毫秒 |
类别 | 客户端连接默认值/语句行为 |
简短描述 | 设置会话中任何事务(非准备事务)的最大允许持续时间。 |
额外描述 | 值为0表示关闭超时。 |
上下文 | 用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 0 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 0 |
重置值 | 0 |
源文件 | |
源代码行 | |
待重启 | 否 |
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文档: transaction_timeout
有用链接
- PostgreSQL 17: transaction_timeout - 2024年2月Daniel Westermann / dbi services发表的博客文章