Карточка Senior Базы данных в эксплуатации обновлено

Безопасные миграции PostgreSQL

Вопрос

Назовите приёмы миграций без простоя в PostgreSQL.

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

locktimeout и повторы; CREATE INDEX CONCURRENTLY; внешние ключи и CHECK через NOT VALID и отдельный VALIDATE CONSTRAINT; NOT NULL через валидированный CHECK (PG 12+); колонка с константным DEFAULT быстро с PG 11; смену типа через новую колонку и бэкфилл; массовые UPDATE пачками; переименования через expand/contract.

Ответ

lock_timeout и повторы; CREATE INDEX CONCURRENTLY; внешние ключи и CHECK через NOT VALID и отдельный VALIDATE CONSTRAINT; NOT NULL через валидированный CHECK (PG 12+); колонка с константным DEFAULT быстро с PG 11; смену типа через новую колонку и бэкфилл; массовые UPDATE пачками; переименования через expand/contract.

Разбор

Инструменты вроде линтеров миграций (squawk) ловят опасные операции ещё в merge request.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме