Adding a new column to a production table looks simple until it isn’t. Schema changes can lock rows, block writes, or cause downstream services to fail. The difference between a clean migration and a frozen app is in how you plan, execute, and verify.
First, confirm the new column name, type, and constraints in a staging environment. Avoid implicit conversions or default values that trigger full table rewrites unless you use an online schema change tool. Always test with production-scale data to expose quirks in indexes or query performance.
Use transactional DDL only if your database and workload make it safe. For large datasets, apply the new column without defaults, migrate the data in batches, and then set constraints. This reduces lock times and preserves availability.