PostgreSQL 19 Beta 1 的发布公告正在定稿
PostgreSQL 19 Beta 1 的发布公告正在邮件列表上打磨,Jonathan Katz 逐条收集功能描述和措辞意见。Florents Tselai 建议补上 GROUP BY ALL,并改写 jsonpath 字符串函数一节,两条都被采纳:公告会说明 GROUP BY ALL 把非聚合、非窗口的输出列自动并入分组。Tom Lane 建议把 parameters 改成输出列,以免和函数参数混淆。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
每日精选 PostgreSQL、数据库与云计算资讯
PostgreSQL 19 Beta 1 的发布公告正在邮件列表上打磨,Jonathan Katz 逐条收集功能描述和措辞意见。Florents Tselai 建议补上 GROUP BY ALL,并改写 jsonpath 字符串函数一节,两条都被采纳:公告会说明 GROUP BY ALL 把非聚合、非窗口的输出列自动并入分组。Tom Lane 建议把 parameters 改成输出列,以免和函数参数混淆。
PostgreSQL 19 实现了 ISO/IEC 9075-16 的 SQL/PGQ,可以直接查询存在关系表里的图数据。Cybertec 的教程用 person 和 knows 两张表演示:先用 CREATE PROPERTY GRAPH 声明点表、边表和两者的关系,再用 GRAPH_TABLE 写模式匹配,多跳可以查朋友的朋友。既不用复制数据,也不用装扩展,底层由 PostgreSQL 重写成普通的连接操作。
ClickHouse 把自家的托管 Postgres 推进 beta,卖点是本地 NVMe 存储、到 ClickHouse 的原生 CDC 和 pg_clickhouse 扩展,主张用 Postgres 存事务状态、ClickHouse 做实时分析,省掉两边之间的外部管道和胶水代码。这意味着 OLAP 厂商不再只做 Postgres 数据接入,而是直接承接 OLTP 托管。自建方案的差异点仍在控制权、扩展生态和成本透明度。
微软在 TechCommunity 上继续推 Azure HorizonDB,定位是面向 AI 时代的企业级 Postgres,路线是存算分离、内置向量与 AI 能力、企业安全默认打开。要留意 Postgres 兼容和 PostgreSQL 扩展生态完全兼容不是一回事:评估这类产品得看扩展支持范围、复制与备份方式、迁移路径、锁定风险,以及真实基准和价格模型。
AWS 数据库博客给出一套用 Debezium 做实时变更数据捕获的做法,替代延迟较高的批量 ETL。组件是打开逻辑复制的 Aurora PostgreSQL 或 RDS for PostgreSQL、跑在 MSK Connect 上的 Debezium 连接器,以及做消息流的 Amazon MSK;Debezium 直接读预写日志,把变更推成 Kafka 主题。步骤包括建参数组打开逻辑复制、配 IAM 角色和上传自定义插件。
Redis 8.8 不是普通补丁版:新增原生 Array 数据结构和 INCREX 命令,改进了 Streams 待处理消息的释放,Search 与 Query 侧做了性能优化和 profiling,HyperLogLog、MGET、MSET、HGETALL 等高频路径也继续提速。方向上 Redis 8.x 一直在从缓存走向多模型内存数据平台,搜索、向量、时序、限流和流处理这些能力被反复加强。
Google 把图算法以预览形式放进 Spanner Graph。Spanner 本来就有全球一致性和 SQL/GQL,图遍历和图算法进到库内之后,把数据 ETL 到外部图分析系统的必要性下降。这说明图能力正从独立图数据库的专属卖点,变成多模型云数据库和事务数据库的常规配置。选型仍要看数据规模、一致性要求、查询语言、算法库是否够用、ETL 代价和云锁定;PostgreSQL 一侧对应的方向是 SQL/PGQ 与 Apache AGE。
Ammar Askar 公布了一个概念验证:经由 github.dev 与 VS Code webview 相关的链路,用户点一次链接就可能被窃走 GitHub token。利用面把 webview、快捷键与命令面板、扩展安装和 token 暴露串在一起。开发者 token 能读写私有仓库,一键失窃的影响远大于普通 XSS。团队可以限制 github.dev 的使用、清理站点数据并降低 token 权限。
日志与 SQL 视图两条路线并行,先合入日志补丁,视图列出后端、预备事务和复制槽的贡献。
多重继承下子表不跟着父表改状态,v7 补丁递归检查本次操作之外是否还有强制父表。
Chao Li 报告问题并给出补丁,Fujii Masao 审阅后推入代码库。
Mihail Nikalayeu 提醒这个问题可能让大量重整工作白做,压力测试套件还在开发。
微软把这套 Postgres 工作流带进 Cursor 编辑器,连接、查询和管理都可以留在编辑器里。
Google Cloud 把 AlloyDB 的 MCP 接入做成全托管服务,结束预览进入正式发布。
托管缓存补上持久性,用它做会话、队列和限流的团队可以重估 RPO、RTO 与责任分界。
kubelet API 细粒度授权、DRA 能力稳定化和 Ingress NGINX 退役提醒都要进升级计划。
可用 OpenAI SDK 或 Responses API 调用,Codex 也能配置成走 amazon-bedrock provider。
Autobase 是把高可用 PostgreSQL 集群自动化搭起来的开源平台,常被当成云托管数据库的自建替代。2.8.0 起项目分成两条线:社区版继续以 MIT 许可开源,面向个人开发者和业余项目;新的企业版是商业版本,针对公司内部的集中管理、运维管控、治理、扩展性与技术支持,官方口径是做成可部署在自有基础设施上的完整 DBaaS。选型时要留意能力今后如何在两条线之间划分。
托管 Postgres 评测系列这次看 Azure Database for PostgreSQL Flexible Server。作者认可的是大版本跟进快,当前支持到 PostgreSQL 17,常用扩展按白名单提供,实例级 PgBouncer 事务池不必另起一层,同步流复制把提交刷到两个故障域再回应客户端,语义可审计。代价是备库进入提交路径,备库一慢主库延迟跟着涨,跨可用区每次提交多 1 到 3 毫秒。
leakproof 指函数没有副作用,除返回值外不泄露参数信息;行级安全和 security_barrier 视图靠它判断用户条件能否被推到安全条件之前执行。Laurenz Albe 指出 PostgreSQL 只标了约 345 个 leakproof 函数,基本都是基础类型的比较运算符,保守的代价是 RLS 下查询性能受损。他认为行级安全本就不该指望挡住能随意写 SQL 的用户,过严的定义牺牲了可用性。
Radim Marek 提醒 pg_stat_statements 不是查询仓库,而是共享内存里一张定长哈希表。由此有几处坑:queryid 按对象 OID 计算,跨大版本或重建表之后就会变,不能当持久主键;ORM 的别名、列表和 LIMIT 差异会把一条逻辑查询打散成上百行;条目数受 pg_stat_statements.max 限制,被淘汰的历史直接消失;mean_exec_time 是开机以来的平均,看不出 p99 毛刺。
云账单之外还有一笔隐性成本:工程师花在数据库维护上的重复时间。文章称之为日程债务,在高负载 PostgreSQL 场景里表现为分区管理、autovacuum 调优、复制监控和容量规划,作者估计可以占掉资深工程师两到三成的时间,而且数据从百万行长到十亿行之后,运维手册变厚、新人上手变慢、产品迭代跟着变慢。建议先做一次 90 天日程审计,统计与数据库相关的故障、会议和维护,再用自动分区、保留策略和存储优化把生命周期管理从人手里拿走。
pg_get_publication_tables() 会返回被排除的表,CURRENT_SCHEMA 下的跨模式排除也缺校验。
Peter Smith 主张 conflict_log_destination 用逗号分隔字符串,Amit Kapila 认为枚举加 all 更省事。
PG19 只放开发布名重复,订阅名会被复用作槽名,留到下个版本再处理。
Tatsuo Ishii 与 Jian He 支持在 0xF0 边界预留 16 个控制码,为将来扩展留出空间。
SQL/PGQ 是 2023 年进入 SQL 标准的图查询语法。Christophe Pettus 介绍了 PostgreSQL 19 落地的 GRAPH_TABLE:先用 CREATE PROPERTY GRAPH 把已有表声明成点表和边表,再用 MATCH 写模式,实现上重写成关系连接交给现有优化器,而不是新做一套图存储。当前不支持变长遍历,深度遍历也追不上 Neo4j 的免索引邻接,作者认为浅层图查询可以留在库里做。
出口流量费是无服务器数据库上数据密集型应用绕不开的成本项。Neon 宣布自 2026 年 6 月 1 日起,所有付费计划的每月数据传输额度从 100 GB 提到 500 GB,涨到五倍,官方口径是让大多数工作负载不必再为出口流量单独付费。新额度对已有账户自动生效,体现在 6 月账单里,用户不需要改配置或换计划。跨区域读副本、逻辑复制和备份导出这些吃流量的路径,以及超出额度之后的计价,仍要按自己的用量核算。
PostgreSQL 19 支持在 wal_level = replica 下不重启启用逻辑解码,随之留下一个开放问题:有 REPLICATION 权限的用户建逻辑槽要不要额外设限。Masahiko Sawada 梳理 Andres Freund 与 Amit Kapila 的论证后提议归入 Non-bugs:这类用户本来就能靠物理流复制读到全部数据,再给逻辑槽不构成新的安全边界。逻辑槽带来的 WAL 膨胀应当靠改进监控来解决。
Robert Haas 提出一套来源追踪机制,用 Provenances 对象记录每次操作的最终发起方和监管链条,为不受信任代码的隔离执行打底。Jacob Champion 认为这有助于识别信任边界,能与他在做的内部能力模型互补,讨论随后落到操作符类与操作符族怎么处理,以及完全可信基础设施该如何界定。两人都同意纯数学函数不该受来源限制,否则机制会严到难用。Tom Lane 以 SELinux 的历史提醒,策略打磨到可用需要好几年。
为逻辑复制记录冲突历史的提案已迭代到第 43 版补丁。评审集中在几处:冲突日志表的权限,非超级用户可以 DELETE 和 TRUNCATE,但 INSERT、UPDATE 应给出专门报错而不是通用权限错误;字段和函数命名要不要保留 log 一词;CREATE SUBSCRIPTION 因建表时序报出订阅被并发删除的缺陷;以及 pg_subscription 新增列的访问控制。最新补丁补上 TOAST 表支持,并调整了建表时序。
RPRContext 整合与 R010 集成推迟到 v48 之后,当前争论 varId 上限该留多少控制位。
Peter Smith 指出 v8 系列的空白字符、psql 多模式补全不全和测试写法问题,还需打磨。
主张数据库要做不拖慢开发的透明底座,举了 serverless 扩缩、Blue/Green 升级和多区域部署。
Alexander Lakhin 报告刚推送的 walsender 关闭超时补丁带来的测试在构建农场上失败:它没等到那条 walsender 因超时退出的告警,看到的却是数据库关闭和连接失败的报错。原因像是时序问题,接收端的就绪标志在主循环跑起来之前就被置上了。他在 walreceiver 里插入 500 毫秒延迟复现了失败,证实存在竞态。结论是测试对时序的假设要重写,得容得下接收端启动与发送端关闭的异步性。
config_file 指出 postgresql.conf 的位置。默认在数据目录下,但发行版会改,Debian 和 Ubuntu 就放在 /etc/postgresql/ 下。它不能写在配置文件里,也不能 ALTER SYSTEM SET,只能启动时用 -c 指定,否则就是循环依赖。配套的还有 data_directory、hba_file 和 ident_file。Pettus 建议接手机器时先 SHOW 这四个,比猜目录靠谱。
断言换成 elog 以便报错,字段名去掉冗余的 log 前缀,权限不足时给出更具体的提示。
新的预算小组件把预算监控挪到账单与成本管理仪表盘里,不必再来回切页面。
Tomas Vondra 和 Bruce Momjian 在讨论针对星型连接的规划优化:识别出事实表连接多张维度表的形态后限制连接搜索空间,只允许标准顺序的前缀组合,比如 [F]、[F,D1]、[F,D1,D2],而不允许 [F,D2]。测试显示维度较多的查询规划时间从数千毫秒降到个位数毫秒。Bruce 希望把前缀的定义讲清楚,并追问维度连接之间是否允许插入非维度表,讨论也在考虑要不要要求所有维度连续连接。
compute_query_id 让内核算出一个各方共用的查询标识,pg_stat_statements、活动视图和日志都能对上。取值有 auto、on、off 和 regress,默认 auto 只在模块提出需求时才计算。Christophe Pettus 提醒的坑是:只在日志前缀里加了 %Q 却没有模块要求计算,日志里的标识就是空的。他建议依赖日志或活动视图的设成 on,装了 pg_stat_statements 的留在 auto。
一篇讨论持久化工作流的文章在 Hacker News 上拿到六百多分:作者认为多数任务编排被过度设计,SQLite 作为嵌入式事务存储,在单机、边缘和小团队场景里性价比很高,用 WAL 加事务状态机就能撑起持久化的工作流引擎,不必先上一套重型队列和编排服务。可以纳入轻量编排的候选方案,但跨节点调度、长事务的可观测性和灾备仍要单独设计。
Prometheus 3.12.0 不是普通补丁版。安全方面修掉了 remote-write 的 Snappy 解压拒绝服务,以及 STACKIT 服务发现的凭据暴露;功能方面新增实验性的 PromQL 函数、TSDB 性能优化、DigitalOcean 托管数据库与 Outscale 服务发现,Web 界面也能删除时间序列并清理 tombstone。跑 3.x 的团队值得排升级,重点检查 remote-write 入口与服务发现配置。
The Register 报道称,一名研究者与微软之间关于 0-day 的争执升级,威胁再放出一批 Windows 漏洞利用代码。这类披露协调失败的直接后果是,企业会被暴露在利用代码突然公开、补丁尚未就绪的窗口里。具体影响仍应以厂商公告和 CVE 编号为准;以 Windows 为主的环境值得提前盯住后续公告、终端检测规则、补丁节奏和临时缓解措施,把监控和应急路径先准备好。
新顺序省掉一次更新,超过 8KB 的 JSON 列所需的 TOAST 表也已在最新补丁集里处理。
最低容量下调直接影响开发环境和低频分析任务的成本可行性。
传统商业数据库继续被搬进公有云区域网络,跨云延迟与出站费值得重新核算。
以 Prometheus 和 Cilium 为例,讲清组件本身之外的集成、调优与运维成本。
攻击期间的流量可落盘分析,便于事后调优规则、对接 SIEM 和补齐审计材料。
core::range::Range* 进入稳定,底层库作者需要关注与未来 edition 迁移的关系。
AI 让代码产出暴增之后,瓶颈转到 diff 的可读性、风险标注和上下文恢复。
含第二代 Model Runner、实验性 Rust 前端、FP8 批次无关推理与多层 KV cache 卸载。
观点文,落点是生产 agent 工具层还需要鉴权、审计、稳定 schema、错误恢复和长生命周期状态。
Shaun Thomas 介绍 PostgreSQL 19 新增的 REPACK:重写膨胀的表并把空闲空间还给操作系统,这是 VACUUM 做不到的。写法是 REPACK (VERBOSE, ANALYZE) 表名,CONCURRENTLY 用复制槽捕获重写期间的改动以避开长时间排他锁,USING INDEX 按索引物理排序,接手 CLUSTER 的活。注意它不能用于无日志表和分区表,也不能放进事务块,并发形态还不是 MVCC 安全的。
Christophe Pettus 讲 Percona 的开源透明加密扩展 pg_tde,当前 2.1.2,官方口径的开销在 10% 以内。它对显式标记的堆表及其索引、TOAST 表、序列和 WAL 做块级加密,内部密钥加密数据、主密钥再加密内部密钥,主密钥放在 Vault 或 KMIP 服务里。没覆盖的部分要留意:系统目录仍是明文,临时溢出文件不加密,而且不支持 pg_upgrade。他的建议是只有合规硬性要求或需要按表加密时才上。
Greg Burd 报告 clang-20 的自动向量化在 RISC-V 构建上生成了错误的散布写入,受影响的不止 DES 加密代码。他排查出三处:pgcrypto 的 crypt-des.c、时区编译器 zic.c 和 pg_trgm 的 trgm_op.c。zic.c 尤其麻烦,时区数据编译出错很难被发现。问题只在 -O2 和 -O3 下、编译器生成 RVV 散布存储时出现。Tom Lane 指出时区数据的测试覆盖有限。
Joel Jacobson 在推进一项名为 key joins 的 SQL 语言特性,并打算提交 SQL 委员会。写法形如 LEFT JOIN 表 FOR KEY (列) -> 别名 (列),直接在连接里声明外键关系。补丁从 v4 改到 v6,修掉了构建失败与测试问题。Matthias van de Meent 建议支持引用命名的外键约束;Laurenz Albe 想用 FROM 和 TO 取代箭头,Joel 说用户反馈显示箭头更清楚。
Nathan Bossart 拿出一版工作补丁来解决 PQfn() 的弃用:在 libpq 里引入回调机制处理预备语句被释放的通知,走协议扩展而不是次版本号,对旧服务端或旧客户端回退到 PQexecParams()。Jacob Champion 建议在切到回退方案之前先把 PQfn() 保留几个版本,并对基于通知的架构表示怀疑,更倾向中间件层面的上下文隔离。相关讨论已另开线程继续。
catalog_xmin 不推进的疑虑被认为与 CLUSTER 同源、可单独处理,v4 的代码改动获批。
缺失的 procsignalbarrier 已补上并带测试,多余的 DELAY_CHKPT_START 标志将在 19 里移除。
先建表能省一次更新,但会撞上禁止依赖不存在对象的新规则,改到订阅之后建更合规。
审阅者主张把捕获放进创建槽的内部函数,才能覆盖所有调用方,并留意锁的处理。
Christophe Pettus 的 GUC 系列新篇,只有开了 track_commit_timestamp 才需要关心。
Christophe Pettus 记下 pgcrypto 与 pg_trgm 里的三个堆溢出。最严重的 CVE-2026-2005 在 pgcrypto 的 PGP 处理中,可致任意代码执行,另两个涉及畸形 UTF-8 解密和三元组扩展。受影响的是 15.18、16.14、17.10 和 18.4 之前的版本。其中两个由自动化工具静态分析找到,办法是跟踪污点数据找出缺失的长度检查。作者说漏洞长期没被发现不是隐蔽,而是没人看。
Percona Operator for PostgreSQL 3.0.0 完成了对 Crunchy Data 算子的硬分叉。自定义资源定义改到专用 API 组,两套算子可以共存于同一个 Kubernetes 集群。这一版修好了 OpenShift 生命周期管理器的命名空间作用域问题,此前算子会盯错命名空间;大版本升级改用官方发行镜像,与生产运行时保持一致。支持 14.23 到 18.4,2.7.0 用户必须先升到 2.8.x 再迁。
Stormatics 介绍 pg_index_search 的流程:先从 pg_stat_statements 取出调用超过 50 次、执行超过 5 毫秒的语句,用解析器从 WHERE、JOIN 和 ORDER BY 中抽出可索引列,再生成单列与多列候选。候选交给 HypoPG 建虚拟索引,在不落盘也不加锁的前提下让规划器评估,用贪心搜索按加权代价挑组合。模型可以补充表达式索引,但所有建议都要过 HypoPG 验证并人工确认。
Vibhor Kumar 总结了在事务中直接调用外部 AI 接口的失效模式:持锁期间等待 I/O 会让请求排队,触发限流后各 worker 同步重试形成风暴,事务回滚也收不回已花掉的 token 和已发出的 webhook,长调用还会占满连接池。他提出 ORBIT 五条原则:先写出箱表再异步执行、限流状态放共享内存、以后台进程为调度单位、从第一天就保证幂等、所有调用留下可审计轨迹。
Daniel Gustafsson 和 Tomas Vondra 在收尾 PostgreSQL 19 的在线开关数据校验和。已确认的缺陷是状态更新时没有发出 procsignalbarrier,而这是维持集群一致所必需的;Daniel 写好了测试,打算在 beta1 之前上三个补丁修掉备库提升时的问题。分歧在 DELAY_CHKPT_START:Daniel 主张先留着、到 20 再删,Vondra 倾向于趁 19 还有几个月就地改掉。
PostgreSQL 19 有一个开放项:wal_level 为 replica 时不重启就启用逻辑解码。Masahiko Sawada 提议把它标为非缺陷并关闭,理由是拥有 REPLICATION 权限的用户本来就能通过物理流复制读到全部数据并影响清理时点,让这类用户创建逻辑槽不带来新的安全风险。与其限制建槽,不如把力气放到监控上,比如按会话或按用户跟踪 WAL 产生量。Amit Kapila 表示赞同。
Amit Kapila 担心长时间运行时 catalog_xmin 不推进,作者认为这与 CLUSTER 一样,应单独解决。
TABLES IN SCHEMA 发布可以排除指定表,这一版统一了命名并修好了分区祖先的内存清理。
旧版补丁对含换行的文本转义不当会报语法错误,新方案先把转义逻辑抽成可复用函数。
改为每次重试单独建内存上下文,提交者认为再加临时上下文反而会让逻辑变脆。
Modbus/TCP、OPC UA 和 MQTT 各由一个 agent 对接,共享数据契约,另有审查与校验 agent 把关。
逻辑复制已广泛用于跨版本升级、多地域部署和实时分析,功能上仍有不少空档。
Christophe Pettus 的 GUC 系列新篇,讲这两个参数怎么用组提交换吞吐。
remote_tuple 等 JSON 列超过 8KB 会让应用进程报 row is too big,且 disable_on_error 失效。