Adding a new column can be simple or destructive, depending on scale, schema, and engine. In small datasets, it is immediate. In production systems with millions of rows, schema changes can block writes, lock tables, or degrade performance. A careless ALTER TABLE can take down an application.
The key is to select the right strategy. In PostgreSQL, adding a nullable column with no default is fast. Setting a default value for existing rows forces a table rewrite. MySQL with InnoDB behaves differently: some column additions are instant; others trigger a full table copy. Check your database version because performance characteristics change between releases.
For zero-downtime migrations, use a phased approach. First, add the nullable column. Deploy code that writes to both old and new fields. Backfill data in small batches to reduce locking. Once populated, make the column non-nullable if needed, and switch reads. This pattern works for columns used in high-throughput systems where downtime is unacceptable.