我们在postgres中有一个相当大的表,在一些重构过程中,我们意识到现有UUID列上有一个索引,但是它缺乏唯一的约束。
是否有人在应用ALTER TABLE ... ADD CONSTRAINT
ala https://www.postgresql.org/docs/9.4/indexes-unique.html方面有任何经验,对运行时间有什么影响?
尝试评估此实时运行与停机时间对运行时间的影响。我们已经在db副本上对其进行了测试,但是很难模拟生产流量负载,并且仅寻找一些东西来检查是否有人经验。
答案 0 :(得分:2)
要在不造成停机的情况下执行此操作,您应该分两个步骤进行操作:
CREATE UNIQUE INDEX CONCURRENTLY idx_name ON table_name (id);
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(id)
USING INDEX idx_name;