【GaussDB】表的维护

为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。

1.相关概念

使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:
•VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。
•VACUUM对每个表维护了一个可视化映射来跟踪包含对别的活动事务可见的数组的页。
一个普通的索引扫描首先通过可视化映射来获取对应的数组,来检查是否对当前事务可见。
若无法获取,再通过堆数组抓取的方式来检查。因此更新表的可视化映射,可加速唯一索引扫描。
•VACUUM可避免执行的事务数超过数据库阈值时,事务ID重叠造成的原有数据丢失。
•ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG_STATISTIC中。
查询优化器会使用这些统计数据,生成最有效的执行计划。

2.使用VACUUM或VACUUM FULL命令,进行磁盘空间回收。

VACUUM customer;


可以与数据库操作命令并行运行(执行期间,可正常使用的语句:SELECT、INSERT、UPDATE和DELETE。
不可正常使用的语句:ALTER TABLE)。

--对表分区执行VACUUM操作。
VACUUM customer_par PARTITION ( P1 );

VACUUM FULL customer;
--执行VACUUM FULL customer时会阻塞涉及customer表的所有操作。

3.使用ANALYZE语句更新统计信息。

 ANALYZE customer;

--使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。
ANALYZE VERBOSE customer;

--也可以同时执行VACUUM ANALYZE命令进行查询优化
 VACUUM ANALYZE customer;

注意:
VACUUM 和 ANALYZE 会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。
因此,建议通过 vacuum_cost_delay 参数设置.

4.删除表 

DROP TABLE customer;

5.维护建议

•定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL。
•定期对系统表做VACUUM FULL,主要是 PG_ATTRIBUTE。
•启用系统自动清理线程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值