mysql vacuum_Vacuum 和 Vacuum Full 的处理过程

本文介绍了PostgreSQL数据库系统中的Vacuum过程,包括常规的Vacuum和Vacuum Full。Vacuum用于清理dead tuples,而Vacuum Full则进行物理删除并释放空间。此外,还讲解了Autovacuum守护进程如何自动执行维护任务。
摘要由CSDN通过智能技术生成

对于数据库系统的并发控制,PostgreSQL采用MVCC(多版本并发控制)进行处理。这种机制有一个缺点,就是随着时间的推移,数据文件中积累的dead tuples会越来越多。怎么去清理这些dead tuples,这个时候就需要vacuum处理。

PostgreSQL系统的vacuum是一个例行性的维护过程,系统也会在启动服务时启动autovacuum守护进程对此进行维护,当然也有vacuum命令可以让用户进行手动执行vacuum操作。除了清理dead tuples,vacuum还有冻结事务ID的功能,因为现在PostgreSQL的事务ID只支持32位(大概40亿个事务),当事务ID达到最大值后,它会重新从0开始,这时以前的事务都会变成“未来”的事务变得不可见。

下面主要介绍vacuum清理dead tuples的过程。 在清理dead tuples时,系统有两种处理方式:vacuum 和 vacuum full。主要区别在如下:

vacuum

vacuum full

只是把表中的dead tuples进行删除标记,并没有真正物理删除;vacuum过程中,可以正常访问数据表

物理删除表中的dead tuples,释放空间给操作系统;vacuum full过程中,表被锁定,不允许访问

Vacuum过程

vacuum的执行过程主要分为以下三步:

1. 清除dead tuples指向的index tuples

该过程中,vacuum会顺序扫描目标表,并构建一个dead tuples组成的list链表,该list链表会存储在maintenance_work_mem缓存中。然后vacuu

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值