Adding a new column sounds simple, but the wrong move can lock writes, freeze queries, or cause downtime. In production, mistakes are costly. The right approach is controlled, predictable, and fast.
First, decide why you need the new column. Every column changes storage patterns, indexes, and query plans. Confirm the type, nullability, and default value before touching the schema.
When altering the table, choose a method that avoids blocking. Many relational databases have online DDL options. Use algorithms that apply metadata changes first, then backfill asynchronously. In MySQL, ALTER TABLE ... ALGORITHM=INPLACE can help. In PostgreSQL, adding a column without a default is often instant, while adding defaults may rewrite the table.
If the new column is part of a large migration, roll it out in phases. Step one: add the column as nullable. Step two: backfill data in small batches. Step three: enforce non-null or constraints when ready. This prevents downtime and protects performance.