PostgreSQL 中 CREATE INDEX 与 CREATE INDEX CONCURRENTLY 的性能

Luc*_*ini 5 postgresql performance index

我知道CREATE INDEX CONCURRENTLY比较慢,但是与传统相比需要多长时间才能完成CREATE INDEX?40%以上还是更多?

我正在一个包含 10000 个寄存器的表和一个包含 15 个字符的列中创建索引。使用传统方式需要 10 分钟CREATE INDEX

我知道这个问题很难回答,但是有办法估算吗?

qri*_*ris 3

第二象限

[CREATE INDEX CONCURRENTLY] 必须等待所有现有事务完成才能开始索引构建的第二阶段。这保证了第二阶段开始后不会创建新的损坏的 HOT 链。

我发现CREATE INDEX CONCURRENTLY创建相同的索引花费了超过 90 秒(在我中止之前),而不是CONCURRENTLY花费 0.5 秒。所以它可能会慢得多

与此同时,该表上没有写入活动,但其他表上还存在其他事务。我认为第二象限意味着所有事务都必须结束,而不仅仅是那些已经写入相关表的事务。