database - Postgres - 一天后 relallvisible 为 0
问题描述
我们在桌子上的性能有问题,所以我发现 relavisible 是 0 和 relpage 大约 1000000。我做了 VACUUM ANALYZE 并且一切都开始正常工作,但一天后这张桌子 relavisible 回到 0。为什么会发生这种情况?我们将此表保存为存档,因此我们每天只使用一个简单的函数将数据从原始表移动到该表。解决方案之一可能是在函数后执行 VACUUM ANALYZE,但我不想这样做。我认为 postgres 应该自己处理这个问题。我知道,在某个时间表之后,表格将再次出现 0,但在一天后表格大约有 10m 行并且我们每天复制 15-20k 行之后没有。
解决方案
这是不正常的。很可能有人对表做了一些事情,比如 VACUUM FULL 或 CLUSTER 或批量更新,这会清除可见性地图。
有可能每个块中都有一些空闲空间,而这些空闲空间被下一次批量插入填满了。但如果是这样的话,既然空间已经满了,它就不应该再发生了。除非造成分散的自由空间的事情再次发生。
推荐阅读
- python - 基于日期过滤器轮询数据
- go - “crypto/bcrypt: hashedPassword 不是给定密码的哈希值”
- javascript - 如何在文本中获取自定义标签,并放入另一个文本?
- heroku - Heroku、HDD 或 SSD 中使用了哪些类型的硬盘?
- ios - 没有通知存折更新
- python - 如何在 gurobi 中保存解决方案差距(MIP Gap)和上限(目标界限)?
- azure-devops - 如何使用相同的步骤和不同的配置文件定义 UAT 和 PROD 阶段?
- python - 如何使用请求抓取受 Cloudflare 保护的网站的 HTML
- django - TypeError: '>=' 在 Django wagtail 查询时发生的 'str' 和 'int' 错误实例之间不支持
- amazon-web-services - AWS WAF:如何使用阻止操作的托管规则制作自定义响应代码