检测并修复Postgresql中损坏的索引?

avi*_*avi 5 sql postgresql

今天,我遇到了一种情况,其中表中存在查询结果中缺少一条记录的情况。我将问题追溯到可能是损坏的索引。我做完之后REINDEX,问题就解决了。

问题是,通常当我运行报告时,我会得到超过10000条记录。我无法知道是否缺少记录。今天我很幸运地发现了问题。

索引损坏时,有没有办法得到通知?

如果不是,我该如何编写一个将REINDEX全部引入我的Schema 的函数?

avi*_*iad 1

索引损坏是一个非常糟糕的问题。我认为您需要从根本上诊断并解决此问题,而不是尝试在查询中对其进行创可贴。kill -9这可能是由于任何Postgres流程等管理行为不善造成的。

对于您的问题:据我所知,没有验证工具。我相信扫描整个索引的查询(例如对索引进行排序)将在索引中找到损坏的页面。

我建议您阅读此博客

  • 但是,在没有某种形式的工具的情况下,如何**主动**检测损坏? (3认同)