我statement_timeout
为我的Postgres数据库中的用户设置为10000
(10秒(。但是,当我查看pg_stat_activity
中的活动查询时,我发现查询运行时间超过 10 秒(在某些情况下超过 10 分钟(。我在执行这些查询的角色上设置了statement_timeout
,并验证了用户在pg_user
表中是否statement_timeout=10000
设置。
这些语句都是插入,我已经验证没有未授予的锁。
为什么超时后没有终止这些查询?
问题似乎是事务处于idle
状态(由于这是Postgres 10,我可以进一步告诉您wait_event
是ClientRead
(,这意味着它们受不同的超时控制(尽管文档对此模棱两可(。要设置的相关配置是idle_in_transaction_session_timeout
。