Answers:
如果使用plain CREATE INDEX
,则该表将被锁定以进行写操作而不是读操作。
也可CREATE INDEX CONCURRENTLY
用于避免写锁定。
当使用该选项时,PostgreSQL将建立索引而不会采取任何防止在表上进行并发插入,更新或删除的锁。而标准索引构建会锁定对表的写入(但不会读取),直到完成为止。使用此选项时需要注意一些注意事项-请参阅同时构建索引。
而更具体的(像@ypercube评论):
PostgreSQL支持在不锁定写入的情况下建立索引。通过指定的
CONCURRENTLY
选项来调用此方法CREATE INDEX
。使用此选项时,PostgreSQL必须对表进行两次扫描,此外,它还必须等待所有可能使用索引终止的现有事务。因此,与标准索引构建相比,此方法需要更多的总工作量,并且需要花费更长的时间才能完成。但是,由于它允许在建立索引时继续进行正常操作,因此该方法对于在生产环境中添加新索引很有用。
大胆强调我的。