Adding a new column sounds simple. It can be, if you know the cost. In SQL, a new column changes the table definition. This can lock writes, rebuild indexes, or cause downtime. On large datasets, the wrong approach can freeze production. The right approach keeps things online.
In MySQL, ALTER TABLE is the command of choice. Adding a nullable column with no default is fastest. Non-null defaults often trigger a full table rewrite. In PostgreSQL, adding a new nullable column is near instant, but filling it with defaults is costly unless you use expressions or backfill in batches. For distributed databases, each node processes the change in sequence. That delay matters if you run across regions.
Schema migrations must be controlled. Write a migration script. Test it against production-size data in staging. Deploy in steps: add the column, deploy code that can read it, then start writing to it. Backfill in small chunks to keep locks short and increase throughput. Monitor the database after each step.