首页 > 解决方案 > Postgres - 一天后 relallvisible 为 0

问题描述

我们在桌子上的性能有问题,所以我发现 relavisible 是 0 和 relpage 大约 1000000。我做了 VACUUM ANALYZE 并且一切都开始正常工作,但一天后这张桌子 relavisible 回到 0。为什么会发生这种情况?我们将此表保存为存档,因此我们每天只使用一个简单的函数将数据从原始表移动到该表。解决方案之一可能是在函数后执行 VACUUM ANALYZE,但我不想这样做。我认为 postgres 应该自己处理这个问题。我知道,在某个时间表之后,表格将再次出现 0,但在一天后表格大约有 10m 行并且我们每天复制 15-20k 行之后没有。

标签: databasepostgresql

解决方案


这是不正常的。很可能有人对表做了一些事情,比如 VACUUM FULL 或 CLUSTER 或批量更新,这会清除可见性地图。

有可能每个块中都有一些空闲空间,而这些空闲空间被下一次批量插入填满了。但如果是这样的话,既然空间已经满了,它就不应该再发生了。除非造成分散的自由空间的事情再次发生。


推荐阅读