峰值吞吐基准测不出生产里真正的瓶颈
基准跑出每秒 8 万次插入、延迟也漂亮,并不代表生产能长期扛住。Matty Stratton 认为真正该看的是持续吞吐上限,也就是 autovacuum、检查点、WAL 归档和复制这些维护进程能够无限期跟上的写入速率。这个上限会随数据增长而下降,文章归纳了四个推动机制,最先出现的是热数据超出可用内存和 autovacuum 跟不上回收。容量规划应当按这条持续上限来做,而不是按峰值数字。
保留原始来源与发布日期的新闻、博客和活动。
基准跑出每秒 8 万次插入、延迟也漂亮,并不代表生产能长期扛住。Matty Stratton 认为真正该看的是持续吞吐上限,也就是 autovacuum、检查点、WAL 归档和复制这些维护进程能够无限期跟上的写入速率。这个上限会随数据增长而下降,文章归纳了四个推动机制,最先出现的是热数据超出可用内存和 autovacuum 跟不上回收。容量规划应当按这条持续上限来做,而不是按峰值数字。
PostgreSQL 18 从 SQL:2023 引入了 NOT ENFORCED 约束,它和早就存在的 NOT VALID 完全不同。NOT VALID 允许先把约束加上而不立即校验存量数据,适合校验代价高昂的大表;NOT ENFORCED 则在数据库生命周期管理里承担另一种角色。EnterpriseDB 这篇文章把两者的定位讲清楚,指出它们针对的是同一类难题:数据量到了 TB 级之后,传统的约束强制执行本身就可能变成性能瓶颈。
Greenmask 是无状态的逻辑备份与脱敏工具,不改 schema,可以直接替代 pg_dump 与 pg_restore,常用来把生产数据做成能进测试环境的脱敏副本。从 0.2.9 到 0.2.17 这一串版本补上了 PostgreSQL 18 支持,恢复端新增 -C 参数,validate 改走内存存储,list-dumps 增加 --quiet,并提供官方安装脚本;转换器新增邮编脱敏与多列公司数据生成。修复覆盖继承逻辑的栈溢出与 ACL 恢复等问题。
补丁作者给出的基准是 TEXT 快 24%、CSV 快 35%,但含反斜杠或引号时会回退 4 到 6%。
cs_CZ 环境里字母排在数字之前,buildfarm 因此报错,Tom Lane 一度考虑把整个补丁回退。
Robert Haas 的 v22 修掉 SubPlan 中 disabled_nodes 的错误,并补上处理替代子计划所需的基础设施。
Jeremy Schneider 梳理了 60 多个多人协作的开源项目如何管理数据库 schema 迁移,覆盖 PostgreSQL、MySQL 这类关系库,也包括 MongoDB、图数据库以及 Kubernetes、Dgraph 等系统。最常见的做法是直接用所在编程语言框架自带的迁移机制,其次是项目自己写的专用代码;触发迁移的方式以应用进程本身最普遍,其次是 Kubernetes Job。他说明结论借助 AI 工具整理并附了源码链接。
Deepak Mahto 列出迁移工具不会提醒的四处麻烦。不带精度的 Oracle NUMBER 被 Ora2pg、AWS SCT 等工具直接映射成 NUMERIC 或 DOUBLE PRECISION,隐式转换会拖慢过程式代码与索引;Oracle 默默完成的类型转换到 PostgreSQL 会直接报运算符错误;SCT 会把无法转换的逻辑编译成空壳过程,元数据校验看不出来;aws_oracle_ext 这类专有 schema 带来云厂商锁定,应换成原生功能或 orafce。
vignesh C 的补丁在 3 月 20 日由 Amit Kapila 提交,ALTER PUBLICATION 从此可以改动排除清单,写法是 ALTER PUBLICATION p1 SET ALL TABLES EXCEPT TABLE (s1.t1, s2.t2)。给出 EXCEPT 子句会整体替换原有的排除清单,不给则清空;SET 只写一类对象时,其余未提及的标志也会被重置。排除清单里只能放根分区表或普通表,写分区子表会报错。
在数亿行、高并发的 PostgreSQL 上,Jake Hertz 实测 SELECT * 这类通配符查询会把性能拉低九成以上。开销来自三处:不必要的 I/O、缓冲区缓存被污染,以及多余列的序列化传输。执行时整页 8KB 会被读入内存,所有列都要过一遍 MVCC 可见性判断,再序列化送上网络;宽行让每页装下的记录更少,读放大随之加剧。结论很朴素:只取真正用到的列。
AI 编程代理能写代码、能生成迁移文件,却做不了开库和发凭据这类运维动作,交付链条到部署这一步就断了。Neon 与 Stripe Projects 完成对接之后,代理可以通过程序化接口创建 Neon 的 PostgreSQL 实例并配好环境,中间不需要人介入。Brad Van Vugt 说这一步补上了代码生成与部署之间的空白,让 AI 辅助开发的流程可以完整跑通。