【问题标题】:Postgres autovacuum doesn't free disk spacePostgres autovacuum 不释放磁盘空间
【发布时间】:2019-03-20 14:17:13
【问题描述】:

我有一个数据库,在一个表中我每天有超过 800 万次插入(记录随时间分布,大约每秒 90-100 次)。

每天我都会删除超过 7 天的所有记录,但表的磁盘空间并没有停止增长。

Autovacuum 在默认配置下处于“开启”状态。删除查询在当晚 2 点 55 分执行。表的最后一次自动清空大约在 3 小时后 6:32 并且没有第二次运行。

为什么每天的磁盘空间增加了大约 1GB?

我现在 autovacuum 不会立即释放磁盘空间,但我可以将删除的行用于新插入。

现在,我似乎正在删除记录,但我没有将可用空间用于新记录,而且表格还在不断增长。

每天删除旧记录后,表中剩余约5000万行,与存储的大小几乎相同。

Postgres 是否有可能想要达到它认为可以毫无问题地操作的表的特定大小?我没有尝试这个,因为没有那么多可用空间,当空间已满时,我TRUNCATE桌子。

【问题讨论】:

    标签: postgresql autovacuum


    【解决方案1】:

    您的意思是表存储大小而不是内存,对吗?

    首先,您应该检查一些常规事项以确定问题:

    log_autovacuum_min_duration 设置为-1 以外的值并查看是否生成消息。

    注意pg_stat_activity 中的 autovacuum 进程。你的问题表上是否有任何运行?

    检查输出

    SELECT * FROM pg_stat_user_tables
    WHERE relname = 'prablemtable';
    

    n_live_tupn_dead_tup 是什么? autovacuum_countlast_autovacuum 是什么?

    我怀疑 autovacuum 正在运行,但无法完成它的工作,因为 one of these three things prevents it from cleaning up:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 2019-01-15
      • 2021-08-09
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2018-07-20
      相关资源
      最近更新 更多