Adding a new column should be simple. It rarely is. Schema changes can break production, stall deploys, and consume hours in rollback. Data migrations slow queries and lock writes. Even small changes risk cascading errors if not planned with precision.
A new column in a relational database means altering the table structure. On small tables, the change is instant. On large, indexed tables with live traffic, it can trigger full-table rewrites. This can block concurrent writes, spike CPU usage, or cause replication lag. In distributed systems, the impact compounds.
Best practice is to add a nullable column without defaults first. This avoids rewriting all rows. Backfill the data in small batches, monitoring load and latency. Then apply constraints or defaults in a follow-up migration. Always test schema changes on a replica before altering production.