Wie führst du eine Migration auf einer großen Tabelle ohne Downtime durch?
Geh davon aus, dass die Tabelle so lange gesperrt ist, wie das Statement läuft, und gestalte die Änderung so, dass das nicht passiert. Spalten fügst du nullable und ohne Default hinzu, den Backfill fährst du in Batches außerhalb der Migration, Indizes erstellst du concurrent, und erst danach fügst du das Constraint hinzu. Umbenennen und Löschen sind die gefährlichen Fälle, weil während des Deploys noch alter Code läuft — die erledigst du in zwei Releases mit einem Dual-Write dazwischen.