Adding a new column should be simple. In practice, it can block writes, lock tables, and break production under load. Schema changes are one of the most dangerous operations in a live system, yet developers make them every day. A careless operation can cause hours of downtime. Done right, adding a column is invisible to users and safe for the system.
When you create a new column in SQL, your database updates its table definition. The impact depends on size, indexes, storage engine, and the operation plan. In MySQL with InnoDB, ALTER TABLE ADD COLUMN may copy the whole table. On a table with billions of rows, that is expensive. PostgreSQL handles some adds instantly if the column has a default of NULL, but adding a default value requires rewriting data.
The safest approach is to break the operation into steps. First, add the new column with a NULL default. This is often metadata-only. Then backfill data in small batches to avoid locking and heavy I/O. Finally, add constraints or defaults once the column is fully populated. This reduces risk, shortens lock time, and removes single points of failure.