作者:瀚高PG实验室(Highgo PG Lab)-天蝎座 在PostgreSQL的各种技术讨论和日常运维中,vacuum基本离不开讨论范围。在日常运维中由于各种原因导致数据库中产生的垃圾数据无法被回收,会造成表/索引的垃圾比例可能一直高于阈值,造成表/索引膨胀。所以在PostgreSQL数据库管理运维过程中,经常需要调整一些vacuum参数,以优化数据库的性能。在了解具体的vacuum参数前,我们更想了解下面几个问题。 - vacuum 是什么? - 为什么需要 vacuum? - vacuum 做哪些工作? 上面这些问题我们十分迫切的需要知道,但是在此前必须先介绍一些其他概念以便于更好的理解这些问题。 ## MVCC > 全称为Multiversion Concurrency > Control,多版本并发控制机制。并发操作。即数据库中可以同时运行多个事务,并发控制是维护并发事务一致性和隔离性的一种机制,本身是一个指导性的概念。在MVCC中,每个写操作都会创建新版本的数据项,同时保留旧版本。当事务读取数据项时,系统会选择其中一个版本来确保单个事务的隔离。MVCC最大的优势就是读不会阻塞写,而写也从不阻塞读。 不同数据库对于MVCC的实现并不相同, 第一种,以Oracle为代表的,把旧版本数据放入UNDO,新数据放入REDO,然后更改数据。这种方式,旧版本的数据放入了UNDO,所以可以有效避免膨胀。 第二种,以SQL Server为代表的,把旧版本的数据写入专门的临时表空间,新数据写入日志,然后去更改数据。这种方式,旧版本的数据放入了专门的临时表空间,所以也可以有效地避免膨胀。 第三种,以PostgreSQL为代表的,把旧版本标示为无效,新数据写入日志,成功后把新版本的数据写入新的位置。这种实现机制是导致数据膨胀严重的一个重要原因,因为旧版本的数据虽然表示为无效状态,但是没被回收前还是占据存储空间。 在此我们不讨论哪种方式更好,不同方式只不过做了不同取舍而已。 ## 事务回卷 该部分内容可通过链接自行了解,对理解vacuum 不可或缺。 https://blog.csdn.net/pg_hgdb/article/details/117448120 ## deadtuple 该部分内容可通过链接自行了解,对理解vacuum 不可或缺。 https://blog.csdn.net/pg_hgdb/article/details/117448369 ## vacuum 通过上面的讲解,我们知道MVCC虽然可以让我们并发的进行事务处理,但是也存在一些问题,例如deadtuple、旧事务ID(txid)的处理等。此时回顾文章开始的三个问题我们就有了自己的答案。 vacuum是一个有助于PostgreSQL的持续运行的维护进程。它的两个主要任务是 清理 dead tuples 和 冻结事务ID,除此以外还会删除clog不必要的部分,更新FSM、VM和统计信息。
Vacuum探索——初识vacuum
来源:这里教程网
时间:2026-03-14 20:17:11
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 模型思维(01)
模型思维(01)
26-03-14 - postgreSQL数据库同步流复制和异步流复制控制
postgreSQL数据库同步流复制和异步流复制控制
26-03-14 - PostgreSQL中的触发器
PostgreSQL中的触发器
26-03-14 - 流复制浅析 —— 主备切换
流复制浅析 —— 主备切换
26-03-14 - 如何将excel表格数据导入postgresql数据库
如何将excel表格数据导入postgresql数据库
26-03-14 - 【读书笔记】《PostgreSQL指南-内幕探索》-8.缓冲区管理器
【读书笔记】《PostgreSQL指南-内幕探索》-8.缓冲区管理器
26-03-14 - 2. PostgreSQL 流复制
2. PostgreSQL 流复制
26-03-14 - LSN与段文件的关系
LSN与段文件的关系
26-03-14 - 事务回卷浅析
事务回卷浅析
26-03-14 - 使用PG_STAT_REPLICATION监视复制
使用PG_STAT_REPLICATION监视复制
26-03-14
