Удаляйте колонку этапами: сначала прекратите её использование во всех версиях приложения, затем проверьте зависимости и только потом выполняйте DROP COLUMN с ограничением ожидания блокировки.
Как спроектировать стратегию zero-downtime-миграции при удалении колонки из таблицы БД со 100 млн строк без остановки записи?
Удаляйте колонку этапами: сначала прекратите её использование во всех версиях приложения, затем проверьте зависимости и только потом выполняйте DROP COLUMN с ограничением ожидания блокировки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Удаляйте колонку этапами: сначала прекратите её использование во всех версиях приложения, затем проверьте зависимости и только потом выполняйте DROP COLUMN с ограничением ожидания блокировки.
Проверьте фоновые задания, отчёты, views, индексы и старые экземпляры. Отдельно убедитесь, что inserts не полагаются на позиционный список всех столбцов. В PostgreSQL логическое удаление колонки обычно не переписывает сразу всю таблицу, но требует сильной блокировки; задайте короткий lock_timeout и повторяйте в безопасное окно. Физическое освобождение места — отдельная операция, потенциально дорогая. Не обещайте буквально нулевую паузу: цель — контролируемое воздействие и совместимость. После удаления rollback старого кода уже может быть невозможен.