PG 19 并行自动清理避坑:别被“并行”骗了,CPU 根本不是关键

深入解析Ceph PG未及时深度清理(pgs not deep-scrubbed in time)的排查与修复 本文深入解析Ceph集群中PG未及时深度清理(pgs not deep-scrubbed in time)告警的排查与修复方法。从理解深度清理机制出发,详细分析了系统负载过高、配置参数不合理、OSD状态不稳及时钟不同步四大常见原因,并提供了从精准定位问题PG到手动触发清理的实战步骤。最后,给出了优化osd_max_scrubs等核心配置参数的治本之策,帮助管理员确保数据一致性并维持集群长期健康。 阅读详情

PostgreSQL 19 引入了 Parallel Autovacuum(并行自动清理)。

新增 GUC 参数 autovacuum_max_parallel_workers 用于限制集群级并行 Autovacuum Worker 数量;新增表级存储参数 autovacuum_parallel_workers 用于针对单表进行配置。所有并行 Worker 仍然来自现有的 max_parallel_workers 资源池, 默认处于关闭状态,该默认配置是合理的。

这是一次真正有价值的改进,但也很容易被误用。

真正实现并行化的部分是什么?

实际上,VACUUM 自 PostgreSQL 13 起就已经支持并行能力,但仅限于手工执行的 VACUUM (PARALLEL n)。到了 PostgreSQL 19,Autovacuum 终于也能够使用同一套并行机制,但需要注意并行化的只有索引清理阶段(index cleanup)。Heap Scan(扫描 Heap 构建 Dead Tuple 列表)、Heap Truncation(最后的 Heap 截断)这两个流程依然是单线程。真正发生变化的是索引阶段:当一张表存在 N 个索引时,Autovacuum 可以将这些索引分配给 N - 1 个 Worker,再加上 Leader 进程,同时进行索引清理。

这里真正关键的词,是“索引(indexes)”。

如果一张表只有:一个主键 B-tree,没有其他索引,那么 Parallel Autovacuum 实际上不会带来任何变化。因为 Leader 自己就能完成唯一索引的清理,没有额外索引可以分配给 Worker, Heap Scan 本身也不是并行的。因此不会获得性能提升,也不会明显缩短 Vacuum 时间。

真正适合 Parallel Autovacuum 的,是拥有大量或高代价索引的表,例如:

  • 多个 B-tree
  • jsonb 字段上的 GIN
  • Partial Index
  • BRIN

尤其是在宽表场景中,GIN Cleanup 本身往往就是 Vacuum 的主要耗时来源。

此时一个 Worker 负责 GIN Cleanup,Leader 同时处理多个较轻量 B-tree,并行化才能真正产生收益。

因此,这个特性的本质是 Parallel Autovacuum 适用于“索引数量多”或者“索引代价高”的表。而对于绝大多数只有少量普通索引的业务表来说,并不会带来明显收益。

CPU 往往不是问题所在

很多问题恰恰从这里开始。看到 “parallel” 后,第一反应往往是“并行了,肯定更快。”随后直接在全局配置:

autovacuum_max_parallel_workers = 4

但 VACUUM 的核心瓶颈,大多数时候并不是 CPU,而是 I/O。整个过程中 Heap Scan 需要持续读取数据页;Index Cleanup 需要读取索引页;PG17 引入的 Dead Tuple TID Store 虽然位于内存,但索引页本身仍然需要从磁盘加载。如果存储系统已经在单次 Autovacuum 时跑满,再增加 3 个 Worker,并不会让磁盘 suddenly 更快,只是让更多进程排队等待同一套 I/O。

这种场景在大量云 PostgreSQL 实例中普遍存在:一个托管式 RDS 或 Cloud SQL 实例,预配置 IOPS 仅数千,对一个中等负载的 200GB 表执行清理时,已达到存储性能上限。此时开启并行,不仅无法提升总吞吐量,还会增加上下文切换开销,同时占用更多 max_parallel_workers 资源槽,影响其他查询的并行执行。

推论:并行自动清理适用于同时满足以下两个条件的环境:拥有大量索引,且存储系统能跟上负载(如预配置 NVMe、适配工作负载的 EBS gp3、本地 SSD)。仅满足其中一个条件,该特性无法发挥作用。

Worker Slot 从哪里来

很多人容易忽略另一个关键问题。
autovacuum_max_parallel_workers 虽然属于 Autovacuum 配置,但 Worker 实际来源于 max_parallel_workers,而这个资源池,本来也是查询并行使用的。这意味着如果一张高索引表的 Autovacuum 占用了 4 个 Parallel Worker,那么同一时间内,业务 SQL 的并行查询能力就会被压缩。

这一问题会因与 autovacuum_max_workers 的交互而加剧。若允许 3 个自动清理工作线程并发运行,每个线程最多配备 4 个并行工作线程,则仅清理操作就会占用 12 个工作线程槽,再加上 3 个自动清理主进程,以及任何活跃的查询并行线程,资源压力会显著增加。开启该特性前,需确保 max_parallel_workers 已配置为应对最坏情况的大小(同时需检查 max_worker_processes 参数)。

合理的配置方案

对于绝大多数集群来说,保持默认关闭,通常就是最佳选择。默认情况下,每个自动清理的并行工作线程数为 0,这一配置对于大多数无需特殊关注的表而言是最优选择。

对于特定的、拥有大量或高开销索引的大表——如包含宽 jsonb 列和 GIN 索引的表、每个分区都有多个索引的大型分区表,以及那些自动清理耗时已成为问题的表——可设置表级存储参数:

ALTER TABLE huge_jsonb_thing
    SET (autovacuum_parallel_workers = 2);

通常设置为 2 就足够。设置为 4 属于较激进的配置,需经过基准测试后再确定。设置更高的值,大概率会增加 I/O 排队开销,反而无法缩短真空清理的实际耗时。

随后,将全局参数 autovacuum_max_parallel_workers 设置为至少不小于已配置的最大表级并行工作线程数,并验证 max_parallel_workers 大小是否足以在承载正常查询负载的基础上,容纳这些并行清理线程。

如何判断它是否真正有效

在目标表执行自动清理期间,可查看 pg_stat_progress_vacuum 视图。在索引清理阶段,主进程和并行工作线程都会出现在该视图中。若工作线程快速出现并消失,而主进程在堆扫描阶段停留大部分时间,说明该表并不适合开启并行机制,应关闭该配置。

另一项诊断方法是通过 pg_stat_user_tables 或自定义监控工具,查看目标表一段时间内的总自动清理耗时。若开启并行机制后,耗时无明显变化,说明该特性未达到预期效果,其占用的资源槽可用于其他更有价值的场景。

原文链接:

https://thebuild.com/blog/2026/04/28/parallel-autovacuum/

作者:Christophe Pettus

PostgreSQL 19 Beta 1 源码编译部署:Ubuntu 22.04 下 3 步性能优化配置 本文详细介绍了在Ubuntu 22.04系统上从源码编译部署PostgreSQL 19 Beta 1的完整流程,并重点分享了三个关键性能优化配置。通过内存参数调优、并行查询与JIT优化以及I/O与WAL优化,帮助开发者打造高性能数据库环境。文章还涵盖了安全配置、性能测试与监控等实用内容,是PostgreSQL管理员和开发者的必备指南。 阅读详情

相关推荐

Docker Prune 深度解析:不是清理命令,而是存储策略

Docker prune 是 Docker 存储管理的核心机制,其本质并非简单删除文件,而是基于联合文件系统(UnionFS)和引用计数模型的资源回收策略。它作用于镜像层、容器可写层、卷、构建缓存及 builder 实例五大存储单元,每类资源的回收逻辑、依赖关系与不可逆风险各不相同。理解 prune 的真实作用域,是避免磁盘告警、CI 构建失败、数据丢失等生产事故的前提。尤其在 BuildKit 普及和多构建器共存的现代流水线中,`--filter` 参数已成为精准控制的关键能力,而 `docker sys

weixin_33907511的博客 309

体育生误入 DBA 行业,后悔了,问换哪行?

说没有希望的,更多是那个人站在他自己当前的认知和情况下得出的一个“临时”的结论,都是感性所为,任何行业都有上升期和成熟期,也都有一部分人选择继续深耕,一部分人选择转向新的领域。但转行不能因为别人说了什么就认为是什么,我见过一些DBA ,转行做销售,做售前,等等,甚至有的身体条件好,转身做了健身教练的也有。所以最终我没有在那个帖子下面留下任何一句话,只有俩字 呵呵,但也并不是留给他的,是留给我自己的,换行,干什么都行,只要能养活自己,自己干的过去,不想死的那种,我看就行。

sql server的专栏 346

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4071

PG 日报|PG19 新增分散式检查点

pgEdge AI 知识库构建器完成了一次重要架构调整,原先将所有模型的预计算嵌入存储在同一个 SQLite 文件中,每个模型对应一组列,随着模型和内容增多,文件体积持续膨胀,即便用不到的模型数据也一并占用空间。受影响的用户在周五登录系统时,发现自己被估算欠下巨额费用,引发广泛震惊。Fujii Masao 指出,在非 assert 构建中,若调用方传入错误的 buffer,可能会静默修改错误的 VM 页面,尤其是该提交扩大了调用方数量并将该函数引入 WAL redo 路径,存在一定安全隐患。

IvorySQL的博客 302

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1943

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

基于Jeecgboot3.9.0的flowable7.2.0流程增加一个OA请假单功能例子(二)

宁波阿成的博客 201

瀚高硬核助力 PG 社区:Postgres 19 迎来并行 TID 范围扫描,速度提升 3 倍

对于任何需要维护超大表(更新旧数据、分批删除、数据迁移)的 DBA 或开发者来说,使用ctid(元组物理位置)将大表切分为多个小块进行处理是标准操作。。随着最近的一个 Commit (0ca3b169) 合并入 PostgreSQL 19 (master 分支),。该功能由瀚高的 Cary Huang 提出并主导开发,由微软的 David Rowley 协助测试及审阅,并最终提交。他们密切合作以完善并行安全逻辑,确保工作进程正确处理扫描限制——最终促成了这个落地到 master 分支的健壮实现。

IvorySQL的博客 705

Python 爬虫实战:爬虫代码打包为可执行文件

本文详细介绍了使用PyInstaller工具将Python爬虫打包为可执行文件的全过程。以豆瓣电影Top250爬虫为例,首先对比了主流打包工具,推荐选择跨平台的PyInstaller。通过编写完整的爬虫代码(包含异常处理和数据保存功能),演示了从环境准备、代码测试到打包配置的具体步骤。重点讲解了单文件打包、自定义图标等高级功能,并针对常见的"找不到模块"、文件体积过大等问题提供了解决方案。文章还说明了跨平台打包的注意事项,帮助开发者实现爬虫程序的无环境依赖部署,大幅提升程序的易用性和部署

2503_91057718的博客 2217

DeepSeek总结的PostgreSQL 19新功能:第一部分

PostgreSQL 19新特性概览:连接优化与性能监控升级 PostgreSQL 19将带来多项实用改进,主要包括连接管理和性能监控方面的增强。在连接服务方面,新增了通过servicefile参数指定服务文件的功能,并支持psql变量设置。性能监控工具pg_stat_statements增加了通用/自定义计划计数器,改进了FETCH命令和IN子句的规范化处理。此外,EXPLAIN输出新增了Memoize节点的详细估算信息,帮助优化查询计划分析。其他改进包括btree_gin扩展对整数类型的支持、临时表截断

l1t的专栏 1170

深入URP之Shader篇1: URP Shader概述

我们知道,URP和HDRP都是基于SRP的,尽管现在可以使用Shader Graph编写Shader,但是手写Shader仍然是有一定的优势,特别是在性能方面,手写Shader可以更极致的优化,因此我们在项目中前期都是直接使用Shader Graph编写Shader,项目后期会改成手写Shader来提高性能。而在SRP中手写Shader,我们仍然使用的是Shader Lab,这个结构并没有太大的变化,但是SRP Shader中使用Shader Lab语言还是有几点不同。

聚焦游戏和图形引擎开发技术 4639

倍福--RS232自由口实现

RS232/485通信协议是在现场中常用到的,比如触摸屏、温控模块等设备控控制器做通信,会常用到此类协议,本文介绍RS232/485自由口通信的实现,并用PC调试助手进行测试。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制器软件 3 硬件连接 3 2.1. PC COM介绍 3 2.2. RS232/RS485连接 3 3.2.1. N030…………. 4 3.2.2. N031…………. 4 2.3. 实际线路连接 5 PLC程序 7 3

weixin_41883890的博客 3284

PostgreSQL 19:超高速聚合的全新突破

Citus:7 个常用高级 SQL 工具原文链接:作者:Hans-Jürgen Schönig。

IvorySQL的博客 1011

WPS文档中心和文档中台 operate 未授权访问漏洞(CVE-2025-0717)

WPS文档中心和文档中台的/open/v6/api/etcd/operate?key=/config/storage&method=get接口存在未授权访问漏洞,攻击者可通过该漏洞获取AK/SK密钥等信息,这些密钥通常用于系统内部认证和权限控制,泄露后可能导致攻击者进一步修改K8s配置、部署恶意容器或执行远程命令,最终实现对系统的完全控制。

李同學AI安全 905

PostgreSQL 18/19 新特性深度解读:从 IO 预取到智能运维,全面提升数据库体验

PostgreSQL 的版本升级成本相对较低,无论是通过pg_upgrade还是逻辑复制迁移,都能较为平滑地完成。PG 18 重在夯实底层 IO 性能和开发便利性,适合追求高吞吐和简化业务代码的团队;PG 19 则聚焦运维可观测性和自动化治理,为大规模、高要求的生产环境提供利器,尤其是自适应 I/O、智能回收和在线表收缩,将显著减轻 DBA 日常负担。面对 AI 应用对数据库提出的新挑战(如 JSON 存储、图关系检索、一致性读),PG 19 也给出了积极回应。

IvorySQL的博客 472

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5776

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

PostgreSQL 日报| PG19 主备切换挂起修复(10 月 17 日)

据 TechCrunch 报道,这些 AI 代理通过利用暴露在应用程序配置、公开代码仓库以及权限过于宽泛的云角色中的凭证和连接设置,成功获取了未经授权的访问权限。随着 AI 代理的广泛应用,敏感配置数据暴露在公开或管理松散环境中的问题,正对全球各类组织构…该讨论围绕 PostgreSQL 在 Windows 上的优雅套接字关闭问题,涉及两个提交的回退:e0f633ca6bc(Windows 专项测试修复)和 29992a6a509(对原始修复的回退)。写入失败,重启后的 worker 会继承当前的。

IvorySQL的博客 279

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

瑞萨PG-FP6编程调试器V1.19手册详解与实战指南

在嵌入式系统开发中,片上调试器(On-Chip Debugger)和闪存编程器(Flash Programmer)是连接开发环境与硬件目标板的核心工具,它们基于调试访问端口(DAP)和芯片内置的调试模块实现程序下载、单步执行和寄存器查看等功能。这些工具通过USB或JTAG/SWD接口与主机通信,其价值在于显著缩短硬件调试周期,提升固件开发效率,广泛应用于微控制器(MCU)的软件调试、量产烧录和低功耗分析等场景。以瑞萨(Renesas)RL78、RX、RA系列MCU为例,官方PG-FP6工具集成了编程与调试双

weixin_33871366的博客 343

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Pearcleaner:让Mac告别“数字幽灵“的终极清理方案

你是否曾卸载了macOS应用,却发现磁盘空间依旧紧张?那些隐藏的缓存、偏好设置和支持文件就像"数字幽灵"般占据着宝贵空间。Pearcleaner——这款免费、开源的macOS应用清理工具,正是为解决这一痛点而生。它不仅能彻底清理应用残留,更能智能管理你的系统文件,让Mac始终保持轻盈状态。 ## 为什么你的Mac需要Pearcleaner? ### 传统卸载的致命缺陷 当你通过Finder将

gitblog_00192的博客 253

TIA Portal V19安装与Profinet远程IO调试避坑指南

在工业以太网中,Profinet通信并非简单配置IP即可完成,其核心是控制器通过DCP协议按设备名识别远程IO站,并向设备下发IP地址,设备名错误或网卡接口选择不当都会导致站点无法上线。稳定的设备命名、PG/PC接口与更新时间、看门狗参数,是保障PLC与远程IO通信可预期、可诊断的基础。对于西门子1200/1500项目调试,掌握从TIA Portal V19安装、GSD文件导入到在线诊断的完整链路,能显著减少下载失败、红灯掉线等现场问题。围绕TIA Portal V19工具链与Profinet远程IO组态,

weixin_31476015的博客 231

终极macOS清理指南:如何使用Pearcleaner彻底释放磁盘空间

你是否曾卸载macOS应用后,发现磁盘空间并未真正释放?那些隐藏的缓存文件、偏好设置和支持文件就像"数字幽灵"一样,仍然占据着宝贵的存储空间。Pearcleaner正是为解决这一痛点而生的开源macOS清理工具,它采用Apache 2.0许可证,为你提供专业级的系统维护方案。这款macOS清理工具不仅能彻底清理应用残留文件,还能优化系统性能,让你的Mac始终保持最佳状态。 ## 🍐 从水果到工

gitblog_00910的博客 198

Mac系统清理工具终极指南:Pearcleaner与AppCleaner深度测评对比

对于Mac用户来说,系统清理工具是保持电脑性能稳定的必备利器。当您删除应用程序时,大量的缓存文件、偏好设置和日志记录仍然会占用宝贵的存储空间。本文将为您提供Pearcleaner和AppCleaner两款主流Mac清理工具的全面对比分析,帮助您根据个人需求做出明智选择。 ## 工具特性解析:功能差异全览 ### 核心清理能力深度剖析 Pearcleaner采用创新的双向路径追踪技术,通过Lo

gitblog_01021的博客 858

终极指南:用Pearcleaner 5步彻底清理macOS,释放宝贵磁盘空间

macOS系统使用时间越长,磁盘空间就越紧张。应用卸载后残留的缓存、配置、日志文件默默占据着大量空间,手动清理既繁琐又容易遗漏关键文件。Pearcleaner是一款免费开源的macOS应用清理工具,专门解决这一痛点,通过智能算法深度清理系统垃圾,帮助用户高效管理磁盘空间。 [![Pearcleaner应用图标 - 机械齿轮与梨的结合设计](https://raw.gitcode.com/gh_m

gitblog_00472的博客 81

Pearcleaner:彻底解决Mac应用残留问题的开源清理工具

你是否曾经删除过Mac上的应用程序,却发现系统存储空间并未如预期般释放?那些隐藏在角落的缓存文件、偏好设置和日志文件就像数字世界的"幽灵",悄悄占据着宝贵的存储空间。Pearcleaner正是为解决这一痛点而生的开源工具,它不仅能彻底清理应用残留文件,还能智能管理你的Mac存储空间,让你的设备保持最佳性能状态。 作为一款免费、开源透明的Mac应用清理工具,Pearcleaner采用Apache

gitblog_00954的博客 198

Mac系统清理终极指南:用Pearcleaner让电脑重获新生

你是否曾经遇到过这样的情况:明明已经卸载了应用,但Mac的存储空间却没有明显增加?或者发现系统越来越慢,却不知道哪些文件在悄悄占用空间?这正是许多Mac用户面临的真实困境——应用卸载不彻底,残留文件堆积成山。 今天我要向你介绍一款开源Mac清理工具Pearcleaner,它能彻底解决这些问题。这款免费的系统优化工具不仅能帮你深度清理应用残留,还能智能管理Homebrew包、优化应用体积,让你的M

gitblog_01010的博客 153

PostgreSQL 18、19 版本新特性大揭秘:性能、开发、运维全面升级!

PostgreSQL 的版本升级成本相对较低,无论是通过 `pg_upgrade` 还是逻辑复制迁移,都能较为平滑地完成。PG 18 重在夯实底层 IO 性能和开发便利性,适合追求高吞吐和简化业务代码的团队;PG 19 则聚焦运维可观测性和自动化治理,为大规模、高要求的生产环境提供利器,尤其是自适应 I/O、智能回收和在线表收缩,将显著减轻 DBA 日常负担。面对 AI 应用对数据库提出的新挑战(如 JSON 存储、图关系检索、一致性读),PG 19 也给出了积极回应。

programmerjob的博客 55

Pearcleaner:免费高效的macOS终极清理工具,快速释放磁盘空间

你是否曾为Mac上不断减少的存储空间而烦恼?应用卸载后残留的文件像幽灵般占据着宝贵空间,手动清理既耗时又容易误删重要文件。Pearcleaner正是为解决这一痛点而生的开源macOS清理工具,它提供了一套完整、简单且高效的解决方案,让你的Mac重获新生。 ## 为什么你的Mac需要专业清理工具?🚀 macOS的系统卸载机制存在一个隐藏缺陷:当你删除一个应用时,系统通常只移除了应用程序本身,而

gitblog_00713的博客 189
上一篇: PostgreSQL 技术日报 (5月11日)|REPACK 并发方案研讨,无锁队列技术亮相
下一篇: PostgreSQL 技术日报 (5月12日)|多款工具发版,内核 BUG 修复
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值