postgresql create index concurrently会对运行中的数据库产生影响吗?
这种方式上的是ShareUpdateExclusiveLock,不会阻塞DML操作。创建索引时候指定concurrently,需要先后两次对表全表扫描完成build,第一次扫描创建索引,不阻塞读写,第二次扫描会合并第一次扫描到目前为止的变更。第二次扫描之后,索引创建必须等待任何持有第二次扫描拿的快照的事务终止,而且创建索引创建的ShareUpdateExclusiveLock是四级锁,会和大于4级的锁冲突,所以有可能会引发阻塞或死锁问题。例如两个会话同时对一个表建立concurrently索引,就会引发死锁问题。