Adding a new column is simple in theory. You define the schema change. You run the migration. You deploy. But real systems don’t wait for you. Production traffic keeps coming. Queries lock. Write operations stall. If you plan poorly, you block your own users.
The safest path is to treat a new column as a controlled rollout. First, add the column without constraints or defaults that slow writes. Keep it nullable. Ensure your migration script runs online or in small batches. Verify that indexes are only created when the dataset is ready.
Once deployed, backfill in the background. Use id-based chunks. Monitor load and replication lag. When backfill completes, add constraints or defaults if needed, then switch your application to read and write from the new column.