加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 在9.1下仍然推荐常规VACUUM ANALYZE吗?

发布时间:2020-12-13 16:20:15 所属栏目:百科 来源:网络整理
导读:我在Ubuntu上使用PostgreSQL 9.1.是否仍然推荐使用预定的VACUUM ANALYZE,还是自动清空以满足所有需求? 如果答案是“它取决于”,那么: 我有一个较大的数据库(30 GiB压缩转储大小,200 GiB数据目录) 我在数据库中进行ETL,每周导入近300万行 具有最频繁更改的
我在Ubuntu上使用PostgreSQL 9.1.是否仍然推荐使用预定的VACUUM ANALYZE,还是自动清空以满足所有需求?

如果答案是“它取决于”,那么:

>我有一个较大的数据库(30 GiB压缩转储大小,200 GiB数据目录)
>我在数据库中进行ETL,每周导入近300万行
>具有最频繁更改的表都是从主表继承的,主表中没有数据(数据按周分区)
>我创建每小时汇总,并从那里,每日,每周和每月报告

我问,因为预定的VACUUM ANALYZE正在影响我的报告.它运行超过5个小时,本周我不得不两次杀死它,因为它影响了常规的数据库导入. check_postgres不报告数据库上的任何重大膨胀,因此这不是一个真正的问题.

从文档中,autovacuum也应该处理事务ID.问题是:我还需要VACUUM ANALYZE吗?

只有非临时表中更新或删除的行才需要VACUUM.显然你正在进行大量的INSERT,但从描述中你并没有明白你也在做很多UPDATE或DELETE.

可以使用pg_stat_all_tables视图跟踪这些操作,特别是n_tup_upd和n_tup_del列.此外,更重要的是,有一个n_dead_tup列,告诉每个表需要抽真空的行数.
(有关统计信息收集的功能和视图,请参阅文档中的Monitoring statistics).

在您的情况下,可能的策略是抑制计划的VACUUM,密切关注此视图并检查n_dead_tup显着上升的表.然后仅将激进的VACUUM应用于这些表.如果有大型表的行永远不会被删除也不会更新,那么这将是一个胜利,只有在较小的表上才需要积极的VACUUM.

但是继续运行ANALYZE以使优化器始终拥有新的统计信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读