You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PgBouncer设置max_prepared_statements=1仍允许多个预准备语句?

PgBouncer 设置 max_prepared_statements=1 未限制单事务内多预准备语句的问题

核心逻辑说明

  • max_prepared_statements 参数的管控对象是单个后端服务器连接上的预准备语句总数,而非客户端单事务内的创建数量。在事务池模式下,只要当前服务器连接还被客户端的事务占用,PgBouncer不会干预你在事务内创建多个预准备语句。
  • 只有当事务结束、服务器连接被归还到连接池时,PgBouncer才会触发预准备语句的清理逻辑——要么删除超过max_prepared_statements限制的语句,要么直接执行DEALLOCATE ALL清空所有(事务模式下默认行为)。

这是预期行为吗?

是的,属于PgBouncer的设计预期。该参数的定位是控制后端连接的全局预准备语句上限,而非单事务的临时创建限制。

需要检查的配置点

  • 确认配置是否生效:在PgBouncer中执行 SHOW CONFIG 命令,查看max_prepared_statements的实际运行值,避免出现配置文件修改后未重启PgBouncer导致的配置未加载问题。
  • 验证事务后的清理行为:事务提交/回滚后,可通过PostgreSQL的pg_prepared_statements视图查看对应后端连接的预准备语句,应该会被全部清空,符合事务模式下的连接复用规则。

内容的提问来源于stack exchange,提问作者manasa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:48:14