在现有的postgres索引中添加唯一约束会对性能产生影响

时间:2019-05-30 15:08:40

标签: postgresql indexing database-migration unique-constraint

我们在postgres中有一个相当大的表,在一些重构过程中,我们意识到现有UUID列上有一个索引,但是它缺乏唯一的约束。

是否有人在应用ALTER TABLE ... ADD CONSTRAINT ala https://www.postgresql.org/docs/9.4/indexes-unique.html方面有任何经验,对运行时间有什么影响?

尝试评估此实时运行与停机时间对运行时间的影响。我们已经在db副本上对其进行了测试,但是很难模拟生产流量负载,并且仅寻找一些东西来检查是否有人经验。

1 个答案:

答案 0 :(得分:2)

要在不造成停机的情况下执行此操作,您应该分两个步骤进行操作:

  1.  CREATE UNIQUE INDEX CONCURRENTLY idx_name ON table_name (id);
    
  2.  ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(id) 
     USING INDEX idx_name;