postgresql重建索引和重建索引之间有什么区别,哪个更好?

jok*_*zhu 4 postgresql postgresql-9.3

我有一张表,索引大小太大(约2G)。当我将数据库还原到VM时,大小只有200M,因此我需要重建/重新创建索引,并且可能会在线进行。

重建(重建索引)和重建索引之间有什么区别,当我在线进行索引时哪个更好?特别是,哪个选项允许在操作期间查询数据库?

小智 5

REINDEX命令需要排他的表锁,这意味着它将停止对表的所有访问,直到命令完成。如果您能负担得起这种维护时段,那就太好了。

在线重建的替代方法是使用创建一个新索引CREATE INDEX CONCURRENTLY,然后删除旧索引。这将花费更长的时间才能完成,但是允许在重建索引的同时访问表。

  • 谢谢你的帮助。我发现有人说“Postgresql支持在同一个字段上创建两个索引,所以我们可以并发使用创建一个新索引然后删除旧索引”这是一个好的解决方案吗? (2认同)