Adding a new column looks simple—until you hit production scale. Schema changes can block writes, lock rows, or cause slow queries. On large tables, an ALTER TABLE ADD COLUMN can quietly consume CPU and IO, ripple through replicas, and stress migrations. Without planning, it breaks deploys.
Modern workflows treat adding a new column as a controlled process. It starts with schema versioning. Define the column in backward-compatible form: nullable or with a default that doesn’t require rewriting the entire table. Use a migration tool that can run online, chunking updates to avoid long locks. Test the migration on staging with production-like data volume.
After the column exists, deploy code that writes to it but still works without it. Backfill in small batches, monitoring performance. Only when the data is correct and the feature is stable should you switch reads to the new column. Then, if needed, make it non-nullable or add constraints in a final migration.