Как бы вы провели миграцию на таблице с 20–80 млн строк: добавить новую колонку и предзаполнить её значением на основе другого поля, если миграция не применяется?

Сначала выясните причину остановки миграции: блокировка, timeout, переписывание таблицы или ошибка SQL. Разделите добавление колонки, совместимую запись новых данных и пакетное заполнение старых строк.

Короткий ответ

Что ответить на собеседовании

Сначала выясните причину остановки миграции: блокировка, timeout, переписывание таблицы или ошибка SQL. Разделите добавление колонки, совместимую запись новых данных и пакетное заполнение старых строк.

Подробный разбор

Ответ с пояснениями

Сначала выясните причину остановки миграции: блокировка, timeout, переписывание таблицы или ошибка SQL. Разделите добавление колонки, совместимую запись новых данных и пакетное заполнение старых строк.

Добавьте колонку без тяжёлого вычисления для всех строк, затем обновляйте ограниченные диапазоны с короткими транзакциями и контрольной точкой прогресса. Вычисление из другого поля требует backfill, а не обычного DEFAULT со ссылкой на соседнюю колонку. Согласуйте конкурентные изменения исходного поля, следите за WAL, лагом реплик и блокировками. Ограничения и индексы вводите отдельными проверенными шагами. Не обходите проблему простым снятием всех timeout.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее