Adding a new column to a production database is never just schema change. It is a contract shift. Data integrity, performance, and deployment sequencing all hinge on how you design and apply that column. The smallest mistake can block writes, lock a table, or trigger a cascade of downstream errors.
First decision: nullable or not. If the new column is required, you must plan for historical rows. Backfill strategies should run in small, reversible batches. Use transactions where possible, but watch for long locks on large tables.
Second: default values. A default on a new column can simplify application logic, but it can also trigger a full table rewrite on some databases. Test the migration load on staging data that matches production scale.
Third: indexing. Do not create indexes on the new column until after it is populated and queried in production. Adding an index too early increases migration time and I/O load without real benefit.