Pull to refresh

Comments 4

Материал огонь! Спасибо за цикл статей по миграциям!

Хорошая систематизация – особенно Expand-Migrate-Contract: без этого шаблона большинство "безопасных" миграций превращаются в лотерею. Кстати, к блоку про CONCURRENTLY стоит добавить один сценарий: если CREATE INDEX CONCURRENTLY прервётся на полпути (дроп соединения, OOM), PostgreSQL оставит индекс с indisvalid = false. Планировщик его игнорирует, а DML прилежно обновляет. Django об этом не предупреждает – нужно самому делать SELECT из pg_indexes по indisvalid и дропать руками перед повтором.

Отличный туториал! Вот бы еще и линтер по правилам из статьи 🌚

ADD COLUMN NOT NULL DEFAULT 'x'

Славик добавил поле is_archived =models.BooleanField(default=False) в таблицу с 80 000 000 строк на PostgreSQL 13. Миграция отработала за 14 минут

Начиная с Postgres 11 при добавлении not null колонки с default с константным значением меняется только метаинформация, никакого обновления таблицы нет. Можете проверить сами.

Sign up to leave a comment.

Articles