在 postgres 中使用“同时创建索引”是否有助于将来插入的行免受锁定?

sof*_*fs1 6 postgresql indexing

仅在第一次创建表时才有效create index concurrently,还是对将来插入的记录有效?

小智 8

您误解了它的作用:它避免在创建索引时concurrently锁定表以进行写访问。

concurrently创建索引后,使用该选项创建的索引与不使用该选项创建的索引没有区别。如果插入新行,则会使用新值更新索引。插入新行不会“重建”整个索引。

创建索引后,无论索引是如何创建的,向表中插入行根本不会锁定表。非唯一索引始终允许并发插入表。

然而,索引会阻止相同unique的并发插入,但不会阻止不同值的并发插入。