gpt4 book ai didi

postgresql - 如何在事务模式下使用 pgBouncer 的 statement_timeout

转载 作者:行者123 更新时间:2023-12-02 16:24:14 25 4
gpt4 key购买 nike

在事务模式下使用 pgBouncer 似乎是在任何给定时间减少事件连接数的最佳方式,但它也带来了一个我不确定如何有效解决的问题。

假设您希望在数据库级别设置 5 分钟的 statement_timeout,只是为了安全地防止任何意外的超长时间运行查询,但是有一群工作人员运行的语句通常需要比这长得多的时间。如果没有 pgBouncer,您可以临时在 session 上设置 statement_timeout 并将其设置回默认后缀,一切正常。但是,如果 pgBouncer 处于事务模式,那么如果不将违规操作包装在事务中并设置本地 statement_timeout,这将无法可靠地工作。但是,这也是不可取的,因为这样您就可以任意长时间运行事务来实现所需的超时设置。

在事务模式下使用 pgBouncer 时,有什么方法可以将本地超时应用于语句,而不必使用事务?

最佳答案

您可以使用SET LOCAL 只为当前事务更改参数:

BEGIN;
SET LOCAL statement_timeout = '1h';
SELECT /* long running query */;
COMMIT;
-- now statement_timeout is reset to the original value

关于postgresql - 如何在事务模式下使用 pgBouncer 的 statement_timeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64860298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com