文章

PostgreSQL 每周新闻 2026-4-15

PostgreSQL 每周新闻 2026-4-15

PostgreSQL每周新闻#644 - 2026年4月15日

_config.yml 备注:英文原文地址

保持 Postgres 队列健康

在 Postgres 中运行作业队列效果很好(“就用 Postgres!”),直到长时间运行的分析查询静默地阻止 autovacuum 跟上。本文介绍了实际发生的情况以及你可以做什么,以及 PlanetScale 自己的内部解决方案。

Simeon Griggs (PlanetScale)

你为所有其他用途扩展 Postgres。为什么不为分析扩展?

TimescaleDB 添加了超表、95% 压缩率和连续聚合,使 Postgres 能够处理实时数据上的分析。无需第二个数据库、无需管道、无需新的查询语言。你已经在编写的相同 SQL。免费开始构建

Tiger Data (creators of TimescaleDB) 赞助商

使物化视图刷新从 O(total) 变为 O(delta)

每次刷新物化视图时,即使只有一行发生了变化,它也会重新计算整个数据集。一个正在 pgsql-hackers讨论的补丁为 REFRESH MATERIALIZED VIEW 添加了 WHERE 子句,因此刷新只触及更改的行。这篇文章包括立即和延迟维护的触发器模式,即使补丁未进入核心代码也很有用。

Adam Brusselback

💡 pg_ivm 作为扩展提供类似的功能,尽管对支持的 SQL 语法有更严格的限制。

理解 Postgres 等待事件

当查询变慢或数据库受 CPU 限制时,Postgres 已经知道原因。pg_stat_activity 视图公开了等待事件,显示每个会话在任何给定时刻被阻塞的确切原因。

Richard Yen

检查点、写入风暴和你

当 Postgres 被迫提前检查点(通常是在达到 max_wal_size 时),它会放弃通常的节流并积极刷新,猛烈冲击磁盘 I/O。默认的 1GB WAL 限制是一个常见的触发器。

Shaun Thomas (pgEdge)

💡 在后续文章中,Jeremy Schneider 指出检查点不是写入风暴的唯一来源:autovacuum_vacuum_cost_delay 设置为零也会触发它们。

‘我将 Linux 内核导入了 Postgres’

一位开发者通过 pgit 将完整的 Linux 内核历史导入 Postgres。这是对 pgit 的良好压力测试,并且现在你可以通过 SELECT 查询多年的 Linux 内核历史。

Oliver Seifert

在大规模下破坏 pg_prewarm 的 1 GB 限制

pg_prewarm 可以在重启后重新加载缓冲区缓存以保持性能。但在 Postgres 16 版本 <16.10 上,如果 shared_buffers 超过约 429GB,pg_prewarm 会失败并使服务器无法访问。这里解释了原因以及如何处理。

Warda Bibi

📄 关于索引不太明显的事情 – 关于复合索引排序、列上的函数调用以及索引你永远不会查询的行的快速见解。Jon Charter

📄 在生产环境中轮换 Postgres 凭证而不停机 ElyDB Team

📄 等待 Postgres 19:新的 pg_get_*_ddl() 函数 Hubert Lubaczewski

发布和代码:

pg_6502:完全在 Postgres 内部运行的 6502 CPU 模拟器

每个 CPU 寄存器、每个标志和 64KB 内存都是 Postgres 表;每个 6502 操作码都是一个存储过程。一个有趣的黑客行为,展示了你可以将 PL/pgSQL 推进到多远。

lasect

💳 Supabase 将 Stripe Sync Engine 转让给 Stripe

Stripe Sync Engine 最初由 Supabase 创建,作为将 Stripe 账户与 Postgres 数据库同步的方式,现在是一个官方的 Stripe 项目。

Supabase

Skunk 1.0:用于 Scala 的纯函数式 Postgres 驱动程序

Skunk 是一个纯函数式、非阻塞的 Scala Postgres 驱动程序,现在支持跨 JVM、JS 和 Scala Native 0.5 的 Scala 2.13 和 3。

Michael Pilquist (Typelevel)

本文由作者按照 CC BY 4.0 进行授权