我在我的Postgres数据库中将某个用户的statement_timeout
设置为10000
(10秒)。但是,当我查看pg_stat_activity
中的活动查询时,发现运行了10秒钟以上的查询(在某些情况下超过10分钟)。我在执行这些查询的角色上设置了statement_timeout
,并验证了用户在pg_user
表中设置了statement_timeout=10000
。
这些语句都是插入内容,我已经证实没有未使用的锁。
为什么这些查询在超时后没有被杀死?
答案 0 :(得分:1)
问题似乎在于交易处于idle
状态(由于这是Postgres 10,我可以进一步告诉您wait_event
是ClientRead
),这意味着它们是由不同的超时控制(尽管文档对此不明确)。要设置的相关配置是idle_in_transaction_session_timeout
。