为什么我们要再造一个 Postgres 连接池PgDog 团队解释了为何在 PgBouncer 等成熟工具存在下,仍选择用 Rust 重写连接池。重点解决传统池化导致的会话状态泄漏问题,如 SET 命令和 LISTEN/NOTIFY 功能失效。 通过内置 SQL 解析和多线程架构,PgDog 实现了透明代理,让应用无需修改代码即可利用这些高级特性,同时提升高并发下的连接利用率。 评论点赞收藏39 天前
你应该对数据库进行分片作者通过一次Postgres生产环境CPU飙升导致宕机的真实故障排查经历,分析了查询规划器统计信息失效的问题。在尝试调整autovacuum参数导致性能副作用后,作者提出分片(Sharding)是更优解,并列举了分片后运维成本降低、迁移速度提升等具体好处。 评论点赞收藏276 天前
扩展 Postgres LISTEN/NOTIFY 功能:PgDog 的代理方案介绍 PgDog 如何通过代理扩展 Postgres 的 LISTEN/NOTIFY 功能,解决原生连接数限制。文章详细解释了基于 Rust Tokio 的架构设计、性能权衡(at-most-once 语义)以及分片策略,为需要高性能实时消息传递且希望减少中间件依赖的技术团队提供了具体方案。 评论点赞收藏377 天前