判断慢查询是规划问题还是执行问题
EXPLAIN ANALYZE 同时给出 Planning Time 和 Execution Time,工程师却往往只看后者。在一张按天分了 500 个分区的表上,规划一条简单聚合查询的耗时可能是执行的 9 倍,因为规划器必须逐个加载并评估分区才能剪枝,继续加索引只会让候选路径更多。执行侧的特征完全不同:溢写临时文件、大量缓冲区读取、过滤条件丢掉大批数据。有函数依赖的列可以用 CREATE STATISTICS 改善估算。
保留原始来源与发布日期的新闻、博客和活动。
EXPLAIN ANALYZE 同时给出 Planning Time 和 Execution Time,工程师却往往只看后者。在一张按天分了 500 个分区的表上,规划一条简单聚合查询的耗时可能是执行的 9 倍,因为规划器必须逐个加载并评估分区才能剪枝,继续加索引只会让候选路径更多。执行侧的特征完全不同:溢写临时文件、大量缓冲区读取、过滤条件丢掉大批数据。有函数依赖的列可以用 CREATE STATISTICS 改善估算。
随机的 UUIDv4 会把 B-tree 索引搅得七零八落:插入位置不可预测,页面在随机处反复分裂,留下一堆半空页。Shaun Thomas 在 100 万行上量了三种主键:随机 UUID 索引 38 MB,叶页填充率 71.53%,碎片率 49.89%;UUIDv7 把毫秒时间戳放在高位,索引 30 MB,填充率 89.98%,零碎片;Snowflake 式 BIGINT 只要 21 MB。单机系统仍该用序列。
lock_timeout 限定一条语句等待某个重量级锁的时长,超时报 55P03,默认 0 即不限制。它与 statement_timeout 的区别在于只管等待,锁一旦拿到就可以一直持有;deadlock_timeout 默认一秒后才记录锁等待,把 lock_timeout 设得更低,语句会在留下日志之前就失败。Christophe Pettus 建议只给迁移角色和工具设 1 到 3 秒并配重试,注意每次取锁各算一次超时。
用 INSERT 显式指定 id 时,serial 或 GENERATED AS IDENTITY 的默认值根本不会求值,序列停在原地,表却一直在长。于是导入全程成功,应用发出的第一条插入却撞上主键冲突。Mikhail Shytsko 给出的修法是 setval 配合 pg_get_serial_sequence(),而不是硬写序列名;空表要用三参数形式避免静默失败,标识列则直接 ALTER TABLE ... RESTART WITH。
Alexey Evlampiev 主张校验、鉴权和状态迁移本来就该在一个事务里完成,事务性 API 的边界应当从应用层移进 PostgreSQL。他把带类型契约、鉴权策略、隔离级别声明和测试的具名数据库函数当作设计单元,HTTP 路由、OpenAPI 与 MCP 工具都只是这些操作的绑定。路由目录做成可查询的表,版本差异写成谓词而非分叉代码,鉴权交给行级安全。流媒体与编排仍留在外层。
这一版把运行时主体从 Zig 重写为 Rust,同时加入无头浏览器、图像、Markdown、cron 与 XML 等内置能力,支持 Windows ARM64 和并行的 bun test。对连 PostgreSQL 的团队更要紧的是两处行为变化:Bun.sql 开始遵守 PGSSLMODE,环境为 require 而服务端没有 TLS 时连接直接失败,不再静默明文回退;infinity 被映射为 JavaScript 的正负无穷。
恶意行为发生在依赖的构建脚本里,工程即使从不调用库 API,一次构建也可能触发远程载荷。Rust 安全响应团队确认 proc-macro1 的构建脚本会下载并执行恶意载荷,而 arrayref、internment 和 append-only-vec 被重新发布并加上了对它的依赖,暴露窗口分别约 86、90 和 107 分钟。团队已删除恶意版本、恢复被恶意撤回的版本并锁定发布账号。
GitHub 已是代码、CI、议题、发布和智能体入口的共享故障域,这份复盘给出的是完整因果链。事故持续 7 小时 47 分钟,Central US 的关键组件没能随流量峰值扩容,压力扩散到认证和多项服务,Copilot 客户端的重试循环又在恢复期放大了流量。官方称月提交数已从 4 月的 14 亿增至 29 亿,后续动作包括统一重试上限与预算、可变超时和面向大仓库的线性读扩容。
一个 TOAST 页上四个元组被判死清除,后续查询报 missing chunk number 0,备份已覆盖无法续查。
WAL 已记提交而 CLOG 未更新会让元组被误判为无效,同步复制下还会让进程无限循环等待。
缺陷可追溯到 PG16 引入 origin 检查的提交,v4 已验证,计划为 16 到 19 各分支准备回移补丁。
约 190 MB 的旧行转成字符串时超出 1 GB 上限,apply worker 崩溃;写日志文件则不受影响。
Zsolt Parragi 以 pg_tde 为例说明加密会被悄悄移除,多数人倾向直接禁止有差异的合并与分割。
探针成本改按实际取行数计算,但精确匹配让雪花模式下的过滤器少用了 6 次,可能是一次回退。
备库上的同步槽若 catalog_xmin 过旧并阻塞主库 vacuum 也会被失效,新增了对应 TAP 测试。
v16 调整了接口命名,并用大模型草拟的分支演示拆分方式,NVMe 上未测出额外延迟代价。
动机是让 operator 和 Terraform 低成本检测角色变更,Andres Freund 质疑为何只改这一张目录表。
带来缓存感知调度、MGLRU 改进与多尺寸大页自动创建,DRM 公平策略因回归仍需显式开启。
允许编译器按实数代数性质重排加减乘除,结果不再逐位可复现,但官方保证不引入未定义行为。
首批接入 Claude、Devin、Copilot 与 Vercel 等智能体,频道归档后保留记录作为审计日志。