【问题标题】:Performance impact of adding unique constraint to existing postgres index向现有 postgres 索引添加唯一约束的性能影响
【发布时间】:2019-10-16 06:23:59
【问题描述】:

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

有没有人有任何应用 ALTER TABLE ... ADD CONSTRAINT ala https://www.postgresql.org/docs/9.4/indexes-unique.html 的经验以及运行时影响是什么?

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

【问题讨论】:

  • 不是一个答案,但是一旦约束到位,您还应该考虑性能影响(尽管理论上,您的业务逻辑甚至不需要它,因为两个随机生成的 UUID 不太可能永远都是一样的)。

标签: postgresql indexing database-migration unique-constraint


【解决方案1】:

要在不停机的情况下完成,您应该分两步完成:

  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;
    

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2012-10-22
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-10-31
    相关资源
    最近更新 更多