文档首页 > > 开发指南> 优化查询性能> 改进查询> 例行维护表

例行维护表

分享
更新时间: 2019/11/12 GMT+08:00

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

相关概念

使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:

  • VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。
  • ANALYZE可收集与数据库中表内容相关的统计信息。统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,生成最有效的执行计划。

操作步骤

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

    • VACUUM FULL
      VACUUM FULL customer;
      VACUUM

      需要向正在执行的表增加排他锁,且需要停止其他所有数据库操作。

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

    ANALYZE customer;
    ANALYZE

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

    ANALYZE VERBOSE customer;
    ANALYZE

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

    VACUUM ANALYZE customer;
    VACUUM

    VACUUM和ANALYZE会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。

维护建议

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

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区