回收空间和分析
· 事务ID管理
数据库的每个事务对应着一个ID,当ID个数超过数据库限定的阈值时,就会重复用前面的ID,造成混乱。
在每个数据库每2百万个事务的时候,对每张表执行VACUUM是很有必要的。
· 系统目录维护
大量的CREATE和DROP命令会导致系统表的迅速膨胀,以至于影响系统性能。
· 由于MVCC事务并发模型的原因,已经删除或者更新的记录仍然占据着磁盘空间。
· 如果数据库有大量的更新和删除操作,将会产生大量的过期记录。
· 定期的运行VACUUM命令可以删除过期记录,回收空间。例如:VACUUM tb01;
· 配置子空间映射
过期的记录会被存放在叫做自由空间映射的地方;
超出自由空间映射空间的过期记录所占用的空间无法回收;
VACUUM FULL命令将回收所有过期记录,但是耗时长;
使用CREATE TABLE AS来处理自由空间溢出的情况:例如tb01自由空间溢出,create table tb02 as select from tb01 ,drop table tb01;
自由映射空间的设置参数:一般不做特殊调整 默认的够用了
max_fsm_pages
max_fsm_relations
· 为优化查询进行回收和分析
GP使用基于成本的查询优化器
ANALYZE命令手机查询优化器需要的统计信息
VACUUM ANALUZE可以一起执行:VACUUM ANALYZE tb_cp_02;
注:一般是在ETL过程时候进行VACUUM操作。