Adding a new column should be simple, but it’s where migrations, schema drift, and deployment risk collide. The wrong sequence means downtime, broken queries, or corrupted data. The right sequence means zero interruption, predictable rollouts, and code that stays in sync with the database.
A new column starts with a schema migration. Create it in a forward-safe way: add the column as nullable, deploy schema changes before writing to them, and backfill data in small, controlled batches. This avoids locking tables under heavy load. Once the data is populated, update the application code to write to both the old and new paths. Only after you’ve verified reads from the new column should you deprecate the old one.
Indexing is another key step. If the new column will be queried often, add an index after the data is in place to prevent locking during large inserts. Watch for write amplification and test index builds in staging against realistic data volumes.