数据仓库服务 GAUSSDB(DWS)-GaussDB(DWS)是否需要定时对常用的表做VACUUM FULL和ANALYZE操作?:VACUUM和VACUUM FULL
VACUUM和VACUUM FULL
在 GaussDB (DWS)中,VACUUM的本质就是一个“吸尘器”,用于吸收“尘埃”。而尘埃其实就是旧数据,如果这些数据没有及时清理,那么将会导致数据库空间膨胀,性能下降,更严重的情况会导致异常退出。
VACUUM的作用:
- 空间膨胀问题:清除废旧元组以及相应的索引。包括提交的事务delete的元组(以及索引)、update的旧版本(以及索引),回滚的事务insert的元组(以及索引)、update的新版本(以及索引)、copy导入的元组(以及索引)。
- FREEZE:防止因事务ID回卷问题(Transaction ID wraparound)而导致的异常退出,将小于OldestXmin的事务号转化为freeze xid,更新表的relfrozenxid,更新库的relfrozenxid、truncate clog。
- 更新统计信息:VACUUM ANALYZE时,会更新统计信息,使得优化器能够选择更好的方案执行SQL语句。
VACUUM命令存在两种形式,VACUUM和VACUUM FULL,目前VACUUM对行存表有作用,对列存表无显著的作用,列存表只能依靠VACUUM FULL释放空间。具体区别见下表:
差异项 |
VACUUM |
VACUUM FULL |
---|---|---|
空间清理 |
如果删除的记录位于表的末端,其所占用的空间将会被物理释放并归还操作系统。而如果不是末端数据,会将表中或索引中dead tuple(死亡元组)所占用的空间置为可用状态,从而复用这些空间。 |
不论被清理的数据处于何处,这些数据所占用的空间都将被物理释放并归还于操作系统。当再有数据插入后,分配新的磁盘页面使用。 |
锁类型 |
共享锁,可以与其他操作并行。 |
排他锁,执行期间基于该表的操作全部挂起。 |
物理空间 |
不会释放。 |
会释放。 |
事务ID |
不回收。 |
回收。 |
执行开销 |
开销较小,可以定期执行。 |
开销很大,建议确认数据库所占磁盘页面空间接近临界值再执行操作,且最好选择数据量操作较少的时段完成。 |
执行效果 |
执行后基于该表的操作效率有一定提升。 |
执行完后,基于该表的操作效率大大提升。 |
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- 云数据库 RDS for PostgreSQL数据库权限_PG数据库管理_华为云
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- Gauss(DWS)数据加解密_数据加解密算法_数据加解密函数
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具