Влияние на производительность добавления уникального ограничения в существующий индекс postgres - PullRequest
2 голосов
/ 30 мая 2019

У нас довольно большая таблица в postgres, и во время некоторого процесса рефакторинга мы поняли, что в существующем столбце UUID был индекс, но в нем отсутствовало уникальное ограничение.

Есть ли у кого-нибудь опыт применения ALTER TABLE ... ADD CONSTRAINT ala https://www.postgresql.org/docs/9.4/indexes-unique.html и как это повлияет на время выполнения?

Попытка оценить влияние времени выполнения этого вживую на время простоя. Мы проверили его на копиях базы данных, но было трудно смоделировать нагрузку на производственный трафик и просто искать что-то, чтобы проверить, имел ли кто-нибудь опыт.

1 Ответ

2 голосов
/ 30 мая 2019

Чтобы сделать это без простоя, вы должны сделать это в два этапа:

  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;
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...