Adding a new column sounds small. It is not. In production, it can lock tables, block writes, and break queries. The cost is downtime, lost data, or a firefight you cannot win. Every schema change must be designed for speed, safety, and rollback.
First, define exactly why the new column exists. Avoid unused fields. Every extra byte affects storage, indexing, and query plans. Document the data type and constraints. Choose defaults carefully — a NULL where you need a value will spread bugs fast.
Second, plan the migration. In PostgreSQL, adding a nullable new column without a default is instant. Adding a column with a default rewrites the table, which can stall a busy database. Use a two-step deploy: add the column first, then backfill in batches. In MySQL, behavior varies by engine and version. Test against staging with production-like data sizes.