Schema changes look simple. They are not. Adding a new column to a live database can trigger slow queries, lock tables, or corrupt production data if you miss details. Every migration has risk, and that risk grows with concurrency, large datasets, or zero-downtime requirements.
A new column changes the shape of your data model. It can break ORM mappings, API contracts, and background jobs. Even unused columns impact performance if they alter indexes or row size. In distributed systems, schema drift between services or regions can cause hard-to-debug failures.
Best practice starts with explicit migrations. Define the new column in a controlled migration file. Include nullability, default values, and constraints from day one. For large tables, use additive changes first—add the column, backfill in small batches, then enforce constraints. Avoid locking commands in critical paths.