Adding a new column sounds simple, but in production, nothing is simple. Schema changes can block writes. They can lock rows. They can silently break integrations that expect a fixed structure. The right approach depends on table size, database engine, and uptime requirements.
In MySQL, ALTER TABLE without care can trigger a full table copy, leading to downtime. Use ALGORITHM=INPLACE or ONLINE to avoid locking, but test every path before production. PostgreSQL can add a nullable column instantly, yet adding one with a default value will rewrite the whole table. Split the operation: first add the new column without a default, then update in controlled batches.
For high-traffic systems, schedule schema migrations during low load, or use background jobs to backfill data. Always replicate changes in staging with production-like scale before pushing live. Watch query plans—new columns sometimes alter indexes or optimizer choices in subtle ways.