Карточка 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 ошибок.