带你了解数据库的“吸尘器”:VACUUM

news/2024/11/28 11:44:40/

本文分享自华为云社区《GaussDB(DWS) VACUUM总结》,原文作者:KevinMV 。

在GaussDB(DWS)中,VACUUM的本质就是一个“吸尘器”,用于吸收“尘埃”。而尘埃其实就是旧版本数据,如果这些数据没有及时清理,那么将会导致数据库空间膨胀,性能下降,更严重的情况会导致宕机。下面将从VACUUM的作用、用法、原理等方面进行介绍。

1、VACUUM的作用

1)空间膨胀问题:清除废旧元组以及相应的索引。包括提交的事务delete的元组(以及索引)、update的旧版本(以及索引),回滚的事务insert的元组(以及索引)、update的新版本(以及索引)、copy导入的元组(以及索引)。

2)freeze:防止因事务ID回卷问题(Transaction ID wraparound)而导致的宕机,将小于OldestXmin的事务号转化为freeze xid,更新表的relfrozenxid,更新库的relfrozenxid,truncate clog。

3)更新统计信息:VACUUM analyze时,会更新统计信息,使得优化器能够选择更好的方案执行sql。

2、VACUUM命令

VACUUM 命令存在两种形式,VACUUM和VACUUM FULL,VACUUM命令做的是LAZY VACUUM。从字面意思就可以看出来,LAZY VACUUM是VACUUM FULL的简化版。具体区别见下表。

注:目前LAZY VACUUM只对行存表起作用,对列存表无效,列存表只能依靠VACUUM FULL释放空间。

VACUUM在GaussDB(DWS)中具体执行语法如下:

1)回收空间并更新统计信息,对关键字顺序无要求

VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ table_name [ (column_name [, ...] ) ] ]

2)仅回收空间,不更新统计信息

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name ]

3)回收空间并更新统计信息,且对关键字顺序有要求

VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table_name [ (column_name [, ...] ) ] ]

重要参数说明:

  • FULL 选择VACUUM FULL清理,可以恢复更多空间,但耗时更多。
  • FREEZE指定FREEZE相当于执行VACUUM时将VACUUM_freeze_min_age参数设为0。
  • VERBOSE为每个表打印一份详细的清理工作
  • ANALYZE | ANALYSE更新用于优化器的统计信息,以决定执行查询的最有效方法。

3、VACUUM原理

3.1 LAZY VACUUM执行流程

(1)从指定的多张表中进行遍历,从而获取每一个表。

(2)获取遍历到表的共享锁,该锁允许其他事务读取。

(3)获取每个页面的dead tuples(死亡元组),并freeze需要的元组。

(4)删除指向dead tuples的院所元组。

(5)删除dead tuples并重新分配live tuples(活动元组)。

(6)更新目标表的FSM(用于记录每个数据块的空闲空)和VM(标记数据块中是否存在需要清理的行)。

(7)重复5,6步骤直到遍历完该表的每一页.

(8)如果最后一页没有元组,则进行截断。

(9)更新与VACUUM有关的统计信息表和系统目录。

3.2 VACUUM FULL执行流程

(1)建立临时表:数据库创建一张临时表,该表继承老表的所有属性。如果用户表有名字与这个临时表相同的,那么就会失败。在该阶段申请的行排他锁(RowExclusiveLock)。

(2)数据复制:将原来表中的数据复制到临时表中。在该过程中完成堆dead tuples的清理。该阶段申请的是访问排他锁AccessExclusiveLock。

(3)交换表:使用新表代替老表。而交换的本质是物理文件的交换,即临时表带老物理文件,老表带新物理文件。该阶段会再次申请行排他锁(RowExclusiveLock)。

(4)重建索引:当交换完成后,会进行索引重建,并更新统计信息。此时对表申请共享锁(ShareLock)。

(5)删除临时表:索引重建完成后,会将带有老物理文件的临时表进行删除。

 

点击关注,第一时间了解华为云新鲜技术~


http://www.ppmy.cn/news/126004.html

相关文章

无刷车载吸尘器方案浅析

新一代车载无刷吸尘器以其马力足,小巧轻便的特点,迅速占领国内外市场。 下面来谈谈吸尘器无刷方案开发的特点: 1.车用吸尘器的方案特点: 在满足吸力的情况下,使用无刷电机的功率大大超过传统车载的吸尘器功率。吸尘效果…

吸拖一体机和扫地机器人哪个好,吸拖一体机值得买吗

洗地机具备吸、拖、消毒、多种使用功能,已经被越来越多居家达人推荐,但还是有很多人对洗地机抱着质疑的态度,洗地机是否真的实用吗?是否真的值得购买?下面就给大家分享一些关于洗地机与其它清洁产品的区别以及洗地机分…

推出“百亿生态”,拼多多“极限左移”

文 | 螳螂观察 作者 | 陈小江 任何一个成功穿越周期的企业,都有一个共同的特点——在发展顺利的时候,主动跳出“舒适圈”,进而跳出一般企业“起始、成长、成熟、衰退”的发展周期,为企业发展画出漂亮的S型增长曲线。 日前&…

吸尘器

吸尘器 链接:http://cnrdn.com/UO55 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27207363/viewspace-739252/,如需转载,请注明出处,否则将追究法律责任。 转载于:http://blog.itpub.net/27207363/viewspace-7…

智能机器人吸尘器的作用

随着人工智能的发展智能吸尘器,也随之诞生了,代替了很多的工作,家庭劳动也代替了,接下来小编带大家了解一下智能机器人吸尘器,了解一下智能吸尘器的特点,功能,以及注意事项。 智能机器人吸尘器…

2022全年度吸尘器十大热门品牌销量榜单

近年来,随着社会经济的发展及人们生活水平的提升,吸尘器的市场需求得到不断地释放,行业规模也在不断扩大。但由于起步较晚,居民的消费能力尚未得到完全释放,目前我国吸尘器市场的渗透率还较低。 根据鲸参谋平台的数据统…

现代电机设计可改进便携式真空吸尘器

在 21 世纪家居中,已经有无数示例充分证明,电机这种简单的日常设备通过现代设计成为了越来越多家用电器不可或缺的组成部分。电机广泛应用于冰箱、电脑、微波炉、风扇、洗衣机和吸尘器等家用电器之中。同时,车库开门器、商店真空吸尘器、园艺…

吸尘器方案开发

吸尘器PCBA方案开发 三、吸尘器主要种类 按形状分:卧式吸尘器、立式吸尘器、手持式吸尘器、桶式吸尘器、推杆式吸尘器 按功能分:机器人吸尘器、便携式吸尘器、水过滤吸尘器、便携迷你吸尘器、除螨吸尘器、车载吸尘器 四、吸尘器工作原理 吸尘器的工作原…