PostgreSQL 社区是时候考虑内置连接池了!

John Doe 八月 31, 2026

为什么我们默认了 PostgreSQL 必须外挂一层代理才能用?为什么连接池不能是数据库本身就有的功能?

目录

image

十年前,PostgreSQL 不擅长处理高并发连接,PgBouncer 是生产环境的标配; 十年后,PostgreSQL 还是不擅长处理高并发连接,PgBouncer 依然是生产环境的标配。

一个悬而未决十年的问题,一个全行业都在默默 “打补丁” 的功能,是时候摆到台面上讨论了:PostgreSQL 内核,该不该原生内置连接池?

全行业的默契:没有连接池,别想上线

为了验证连接池到底是不是 “刚需”,经过统计全球 20 家主流 PostgreSQL 托管服务商的配置,发现结果一目了然:

服务商 内置连接池 实现方案 说明
Aiven PgBouncer 起步套餐及以上可用
阿里云 RDS PgBouncer 默认支持
AWS RDS / Aurora RDS Proxy 独立托管代理服务
Azure PostgreSQL PgBouncer 默认支持
Crunchy Bridge PgBouncer 默认支持
DigitalOcean PgBouncer 默认支持
EDB Postgres AI PgBouncer 默认支持
Google Cloud SQL PgBouncer 需企业增强版
Heroku PgBouncer 部分套餐支持
Neon PgBouncer 默认支持
Supabase PgBouncer / Supavisor 自研 + 开源双方案
Railway / Render PgBouncer 付费库默认开启
IBM Cloud 仅支持用户自行部署
Oracle OCI 无托管连接池

剔除两家偏向传统企业的服务商后,所有主流云厂商 100% 标配了连接池能力,其中绝大多数直接采用了 PgBouncer。 换句话说:在真实的生产世界里,根本不存在 “不带连接池的 PostgreSQL”。用户买到的、用到的,永远是 “PostgreSQL + PgBouncer” 的组合体。

荒谬的现状:人人都要,人人都要自己装

既然所有人都需要,那它为什么不能是数据库本身的功能?

眼下的生态现状,是全社会的重复投入:

  • 厂商侧:每一家云服务商都要独立做 PgBouncer 的集成、打包、配置调优、监控适配,各自制定部署规范和使用说明,本质是同一件事重复做二十遍;
  • 用户侧:每一个 DBA 和后端开发者,都要专门学习 PgBouncer 的工作模式、参数权衡、功能边界(比如不支持 LISTEN/NOTIFY),踩过无数坑才能稳定用好;
  • 运维侧:每套生产架构都要多维护一层代理组件,多一个故障点,多一份性能开销,多一套监控告警和容灾预案。

打一个形象的比方:这就像你去买车,新车出厂居然没有挡风玻璃。销售理直气壮地说:“大家都自己装啊,门口汽配城就有,装完就能开。” 你确实能装,装完也确实能开,但你永远会觉得哪里不对 ——这本该是原厂就该配齐的东西。

是时候把连接池 “还给” 内核了

放眼整个数据库行业,内置连接池从来不是什么新鲜事。 MySQL、MongoDB 等主流产品早就在内核层面实现了连接池能力。用户拿到一个实例、一个地址、一个端口,开箱即用,不用额外部署代理,不用学习第三方组件,更不用为连接数突增手忙脚乱。

PostgreSQL 并非做不到,而是长期受困于 “进程模型 vs 线程模型” 的历史技术路线之争,内核层面的改进步履维艰。 但我们不妨算一笔账:过去十几年间,整个 PostgreSQL 生态里,所有厂商投入的研发人力、所有用户付出的学习成本、所有运维踩过的坑,这些 “为连接数问题付出的代价” 加起来,早已是一个天文数字。

如果能在内核中内置生产级连接池,这会是 PostgreSQL 有史以来投入产出比最高的体验改进之一

  • 云厂商无需再各自维护 PgBouncer 集成方案,生态重复建设大幅减少;
  • 新手学习曲线大幅降低,不用刚入门就被 “连接池 / 事务池 / 语句池” 劝退;
  • 业务架构少一层代理跳转,性能损耗更低,故障链路更短,稳定性再上台阶。

写在最后

当然,内核级连接池的落地会涉及大量技术权衡与历史包袱,不可能一蹴而就。 但当整个行业都在用同一种方式 “给内核打补丁”,当所有使用者默认接受 “数据库必须加一层代理才能用”,信号已经足够清晰:

连接池从来不是什么 “锦上添花的非核心功能”,它是生产环境的刚性需求,是数据库易用性的基石。 PostgreSQL 社区,是时候认真考虑把它内置进内核了。