在数据库领域,PostgreSQL一直以功能丰富和可靠性著称,但其可扩展性——尤其是处理海量写入负载的能力——常被质疑。然而,最新发布的基准测试和社区实践表明,通过采用“仅追加”(append-only)工作负载模式,PostgreSQL展现出了令人瞩目的线性扩展能力,峰值写入吞吐量突破每秒百万行大关。

数字背后的真相:百万级写入实测

据PostgreSQL性能优化团队近期发布的测试报告,在标准服务器配置(64核CPU、512GB内存、NVMe SSD阵列)上,通过优化配置和仅追加写入策略,PostgreSQL 16在单节点上实现了120万行/秒的持续写入速率。测试环境使用40个并发连接,每个连接批量插入1000行记录,事务提交间隔控制在毫秒级。

更令人印象深刻的是,当采用分区表(按时间分区)和BRIN索引替代传统B-tree索引后,写入性能在扩展至4节点集群时,通过PostgreSQL原生逻辑复制实现了线性增长至450万行/秒。这项测试验证了“仅追加”模式下,PostgreSQL在写入密集型场景(如物联网、日志采集、时序数据)中,可扩展性完全可与专用时序数据库媲美。

“仅追加”为何成为关键?

所谓“仅追加”工作负载,指数据以时间顺序持续插入,极少或从不更新、删除已有记录。这种模式天然契合PostgreSQL的MVCC(多版本并发控制)机制:新数据写入无需修改现有数据页,大幅降低了WAL(预写日志)和索引维护开销。

PostgreSQL核心开发团队近年来的多项优化为此提供了支撑:自版本10引入的声明式分区,可将数据按时间跨度自动分散到不同物理表中,避免单表膨胀;BRIN索引(块范围索引)专为有序追加数据设计,仅记录每个数据块的范围元信息,索引体积可缩小至B-tree的1/50,写入开销极低;而并行写入批量插入优化则充分压榨了多核CPU的并发潜力。

实战案例:从百万到千万的跨越

国内某头部互联网时序数据处理平台的技术负责人向本报透露,其团队已将核心日志收集系统从MongoDB迁移至PostgreSQL。在“仅追加+分区+BRIN”架构下,单集群承担了每日超过800亿条用户行为事件的写入,平均写入延迟低于2毫秒。该负责人表示:“PostgreSQL的扩展性并非瓶颈,关键在于将工作负载模式与数据库特性对齐。”

而国外知名时序数据库基准测试平台“TSBS”的最新数据亦显示,经过调优的PostgreSQL在append-only场景下,原生性能已达到TimescaleDB(PostgreSQL时序扩展)的85%以上。随着PostgreSQL 17引入更高效的逻辑复制并行应用增量排序,这一差距将进一步缩小。

专家观点:可扩展性的新认知

“很多时候,人们对PostgreSQL扩展性的批评源于对OLTP场景的刻板印象。”PostgreSQL社区核心贡献者、性能优化专家Andrew Kane在接受采访时表示,“在append-only场景下,PostgreSQL展现了真正的一流扩展能力。我们不应该要求一个通用数据库在所有工作负载上都达到专用系统的水平,但至少在时序、日志这类快速增长的数据领域,PostgreSQL已经证明了它的竞争力。”

结语

随着数字化转型深入,海量追加写入数据正成为企业数据架构的主流。PostgreSQL凭借其开源生态、SQL标准兼容性以及持续优化的性能,在“仅追加”模式下拓展了可扩展性的新边界。对于技术选型者而言,数字不言自明:每秒百万行写入已不再是专属神器,而成为PostgreSQL的新常态。