Adding a new column should be simple. Yet in most production databases, it triggers risk, downtime, and fear of silent data corruption. The wrong migration can block writes, lock tables, or break replication. The right migration keeps the system online and consistent while evolving the schema.
A new column in SQL can be added with ALTER TABLE ... ADD COLUMN. But in high-traffic systems, you must consider table size, blocking behavior, and deployment coordination. Some engines lock the entire table for the duration of the operation. Others support non-blocking or online DDL. Even then, indexes, default values, and constraints can cause hidden performance costs.
Best practice is to deploy in stages. First, add the new column as nullable with no default to avoid rewriting the table. Next, backfill data in controlled batches to avoid saturating I/O. Then, apply not null or unique constraints in a separate migration. This staged approach reduces lock times and makes rollbacks possible.