Adding a new column is one of the most common schema changes. Done right, it improves performance, unlocks new features, and keeps data consistent. Done wrong, it locks tables, blocks writes, and knocks your app offline.
A new column should start with a clear definition: name, type, default value, and whether it allows NULLs. Use explicit types. Avoid magic defaults unless required by the migration. If the column will have high read or write traffic, index it at creation—but know that building indexes on large tables can be costly in production.
Zero-downtime migrations are essential for production-grade systems. Break the change into steps: add the column without constraints, backfill data in batches, then apply constraints or indexes. In PostgreSQL, ALTER TABLE ADD COLUMN with a default can lock the table; consider adding it without default, then updating data separately. In MySQL, use ONLINE DDL where available.