Как выполнить миграцию на большой таблице без простоя?
Исходить из того, что таблица заблокирована на всё время выполнения оператора, и строить изменение так, чтобы этого не случилось. Колонки добавляют nullable и без дефолта, бэкфилл гонят пачками вне миграции, индексы создают конкурентно и только потом вешают ограничение. Переименование и удаление опаснее всего, потому что во время выката ещё работает старый код: их делают в два релиза с двойной записью между ними.