A single column change can decide whether a release ships on time or burns another sprint. Adding or altering a column in a production database must be fast, safe, and reversible. The longer the schema is in an unknown state, the greater the risk of broken queries, blocked writes, or data loss.
A new column should never require downtime. Use an additive migration. Create the column with a default value or as nullable. Backfill in small batches to avoid locking. Then swap application logic to read and write the new field. Test read paths first, then write paths. Only remove the old column after verifying full parity in monitoring and logs.
For large datasets, use metadata-only operations when possible. Many modern databases can add a nullable column instantly. For types or constraints that require storage changes, plan background processing jobs. Keep them idempotent and resumable. Handle schema versioning in the application code so both old and new columns can coexist until migration completes.