ON CONFLICT 修复可串行化隔离缺口
PostgreSQL 修复了 ON CONFLICT 对冲突行读取缺少谓词锁的问题。采用 DO NOTHING,或更新条件拒绝该行时,语句可能没有实际写入,原先的冲突探测也未登记读依赖,导致可串行化事务仍出现写偏斜。新实现用查询快照重新读取冲突行,在缓冲区锁保护下获取读锁并检查并发写入。前两类路径自 9.5 起受影响,修复已回补至 14 等受支持分支;这是代码修复合入,正式小版本尚未发布。
pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
当天收录 26 条。
PostgreSQL 修复了 ON CONFLICT 对冲突行读取缺少谓词锁的问题。采用 DO NOTHING,或更新条件拒绝该行时,语句可能没有实际写入,原先的冲突探测也未登记读依赖,导致可串行化事务仍出现写偏斜。新实现用查询快照重新读取冲突行,在缓冲区锁保护下获取读锁并检查并发写入。前两类路径自 9.5 起受影响,修复已回补至 14 等受支持分支;这是代码修复合入,正式小版本尚未发布。
PostgreSQL 19 分支撤回了 UPDATE/DELETE FOR PORTION OF 及后续修正,并删除对应发布说明。这套语法原本用于只修改或删除范围列覆盖的部分时间段,自动保留两侧剩余记录。临近下一轮测试版,审查仍在讨论并发更新的处理方式;本次回退同时撤下解析、执行、补全和测试代码,属于已执行的版本范围调整。已经按测试版语法开展验证的应用需要重新评估依赖,不能继续把这项能力视为 19 的既定交付。
PostgreSQL 开发分支为 TOAST 外置大字段加入 64 位对象标识的磁盘指针格式。此前扩宽对象编号计数器之后,这次进一步让块标识列使用 oid8 的 TOAST 表实际保存八字节编号,并同步调整解压读取、关系缓存及 amcheck 校验。新指针比原格式多四字节,类型标记必须与 TOAST 表的块标识类型一致。改动已合入 master 并递增系统目录版本,为大规模外置值提供更宽的编号空间,仍属于开发快照中的存储格式变化。
PostgreSQL 开发分支引入统一的表访问方法索引扫描入口,由表访问方法在扫描开始时选择普通扫描或仅索引扫描的具体实现。原先散落在执行器中的可见性映射检查移入堆表实现,自定义存储因此可以实现不依赖堆表可见性映射的仅索引扫描。约束检查另走专用的元组读取接口,扫描统计也随之调整。这是已经合入的接口重构,为后续批量取索引项和预取数据页准备基础;本次提交本身尚未交付那两项性能特性。
Percona 拆解了 Server for MySQL 8.4.11-11 的缓冲池性能改进。前台线程不再持有 LRU 互斥锁清零整块内存,锁只保护必要的链表操作;后台管理线程提前准备空闲页,并把干净页淘汰计入工作量,减少过度休眠和重复扫描。厂商称,在同一台机器的测试中,这些调整改善了中等并发吞吐,并减轻高并发时的性能下滑。文章同时比较多个 Percona 与上游版本,提示排查吞吐拐点时关注内部锁和页回收,而不只看查询计划。
Cloudflare 为 Workers 增加按单个服务分配的权限,成员和 API 令牌可获得元数据只读、代码只读、编辑或管理员角色。团队可让运维查看设置与指标,同时限制读取代码、创建或删除服务。权限可通过控制台、API 和 Terraform 管理,Durable Objects 随所属 Worker 继承授权;路由管理仍需相应区域权限。功能面向所有客户,可缩小协作账号与自动化凭据的权限,D1、R2、KV 的同类控制仍在后续计划中。
此前只拦截尚未就绪的索引,新提交连已就绪但验证失败的索引也一并拒绝,避免复制和切换不完整的索引。
Tomas Vondra 对照邮件归档与 Git 历史,观察到日均邮件约百封、周提交约五十次,并区分附件和翻译更新对规模指标的影响。
0.2 接入持久化断言记录巡检结果和新鲜度,并固定函数的 search_path,修复监控会话找不到内部函数的问题。
预览版结合 Citus 14,扩展分布式 JSON_TABLE、时间约束等支持,并可从协调节点查看跨工作节点的执行计划。
测试版 API 可创建、查询、列出和删除分支时间点快照,恢复操作从指定快照创建新分支。
测试功能把行过滤和列掩码策略应用到视图,需管理员启用预览,并使用 Databricks Runtime 19 或更高版本。
作者在重复打开同一文件的测试中显著减少 CPU 周期,以挂载命名空间和 inode 等定位缓存,遇到硬链接则回退完整检查。
32 项子技能结合数据库检查工具,让代理按实际版本、目录和权限处理查询调优、迁移与运维任务,兼顾自建与托管环境。