kis*_*rgy 17 postgresql maintenance vacuum
我使用的软件,这使得一个很大的PostgreSQL数据库(有一个表中有一个百万行)和开发商说我应该VACUUM和ANALYZE周期性。但是 PostgreSQL 数据库默认是autovacuum开启的。
我应该抽真空/分析吗?有什么好处?自动抽真空和手动抽真空有什么区别
例如,在 Pgadmin3 中,我有这个:

小智 14
我同意 ETL 没有简短的答案。大小不是唯一重要的事情 - 我们在重负载下运行相当大的 PostgreSQL OLTP 数据库(某些表 > 100.000.000 行),目前我们仅依赖于 autovacuum。
然而,有两件事对我来说似乎很重要:
似乎有一个共识,autovacuum永远不应该被关闭,除非你的数据库有一个非常明确的工作负载并且你确切地知道你在做什么。但是,自然地,您可以进行额外的VACUUM和/或ANALYZE运行。
在考虑额外VACUUM运行之前,我会检查 autovacuum 如何跟上。您可以通过查询pg_stat_user_tables和来检查是否有任何表超出了 autovacuum 阈值pg_class。我在另一个线程上发布了这样一个查询,这可能很有趣:PostgreSQL 上的 Aggressive Autovacuum。
不幸的是,对自动分析阈值进行类似检查并不容易(即目前不可能)。然而,默认情况下,自动分析在自动真空之前很久就开始了,而且便宜得多。因此,基本上如果您的数据库可以跟上 autovacuum,那么 autoanalyze 也可能没问题。也可以从 查询上次自动分析日期pg_stat_user_tables。
我发现有用的(最优秀的)PostgreSQL 文档的某些部分:
Autovacuum应该很好地覆盖它,除非您配置错误。其他答案已经涵盖了这一点。
手动 VACUUM(更重要的是:手动ANALYZE)有一个明确定义的情况:临时表,自动清理恶魔不考虑它们。我在CREATE TABLE这里引用手册:
该自动清理守护程序不能访问,因此不能真空或分析临时表。因此,应通过会话 SQL 命令执行适当的真空和分析操作。例如,如果要在复杂查询中使用
ANALYZE临时表,最好在填充后在临时表上运行。
| 归档时间: |
|
| 查看次数: |
30310 次 |
| 最近记录: |