首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于autovacuum_count、last_autovacuum和autoanalyze_count,在PostgreSQL中,空和零的可能含义是什么?

对于autovacuum_count、last_autovacuum和autoanalyze_count,在PostgreSQL中,空和零的可能含义是什么?
EN

Database Administration用户
提问于 2021-06-11 07:46:58
回答 1查看 538关注 0票数 3

我在一个运行在Debian /Linux服务器上的big_table 12.7数据库中有一个大表(我们称之为PostgreSQL )。这台机器有8GB的内存和4个CPU核,并且主要用于这个PostgreSQL服务器。

目前,这个big_table有大约1.03亿行保存时间序列数据(例如,数据不被更新、只插入或删除)。几乎每个月,我都会从这个表中删除大约2500万到3000万行。这些被删除的行对应于连续的时间范围(例如,“删除.介于1-Mar和30-MAR之间”之类的内容)。这些DELETE操作需要10分钟到30分钟才能完成。这种使用模式有效期超过6个月。

表大小约为46 GB,该表的索引加起来约为61 GB。

有一个应用程序每隔几秒钟就向这个big_table插入10行,另一个面向用户的web应用程序从这个表中读取一些最近的值。

每次我运行删除2500万至3000万行(月底)的DELETE操作时,我都会看到AUTOVACUUM启动并开始工作。

我想检查一些有关AUTOVACUUM的统计数据,并在该数据库中运行以下SQL查询:

代码语言:javascript
复制
SELECT relname, last_vacuum, vacuum_count, autovacuum_count, last_autovacuum, autoanalyze_count, last_autoanalyze
FROM pg_stat_user_tables 
WHERE relname = 'big_table' ;

令我惊讶的是,它得出了以下结果:

代码语言:javascript
复制
|relname     |last_vacuum|vacuum_count|autovacuum_count|last_autovacuum|autoanalyze_count|last_autoanalyze|
|------------|-----------|------------|----------------|---------------|-----------------|----------------|
|big_Table   |           |0           |0               |               |0                |                |

我试图理解以下几点:

  • 为什么autovacuum_countauto_analyzecount为零?
  • 为什么last_autovacuumlast_autoanalyze为空?

不幸的是,https://www.postgresql.org/docs/12/monitoring-stats.html的官方文档对我没有多大帮助。

  • AUTOVACUUM可以启动但不能完成吗?类似的分析?
  • 如果是的话,根本原因可能是什么?
  • 我应该检查什么来验证常规清除是否做了它应该做的事情?
EN

回答 1

Database Administration用户

回答已采纳

发布于 2021-06-11 14:00:16

如果数据库被不干净地关闭,那么所有的状态都会被重置。你可以检查一下pg_stat_database。或者可以手动重置它们,无论是针对数据库还是针对单个表。

AUTOVACUUM可以启动但不能完成吗?类似的分析?

是的,但是日志文件中应该有关于它的消息。

例如,如果您经常执行诸如重新启动数据库或创建或删除索引之类的事情,这将中断自动真空,如果您经常这样做,那么自动真空可能永远无法完成。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/294122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档