Greenplum 调优--VACUUM系统表
1、VACUUM系统表原因
Greenplum是基于MVCC版本控制的,所有的delete并没有删除数据,而是将这一行数据标记为删除,
而且update其实就是delete加insert。所以,随着操作越来越多,表的大小也会越来越大。对于OLAP
应用来说,大部分表都是一次导入后不再修改,所以不会出现这个问题。
但是对于数据字典来说,就会随着时间表越来越大,其中的数据垃圾越来越多。
2、Greenplum的VACUUM工具
Greenplum的VACUUM工具,可以回收已经删除行占据的存储空间。
语法:
vacuum table;
vacuum full table;
1)简单的vacuum table只是简单的回收空间且令其可以再次使用。可以缓解表的增长。
这个命令执行的时候,其他操作仍可以对标的读写并发操作,没有请求排他锁。
2)vacuum full执行更广泛的处理,包括跨块移动行,把表压缩到最少的磁盘块数目存储。
这个命令执行的时候,需要加排他锁。
3)PostgreSQL中,此功能是自动执行。但是Greenplum中大部分的表是不需要vacuum的,
所以vacuum的autovacuum是关闭的。
4)执行vacuum后,最好对表上的索引进行重建