Adding a new column sounds simple. In production, it can break services, lock tables, and stall deployments. Schema changes must be fast, safe, and reversible. They must work at scale without blocking reads or writes.
A new column alters how the database stores and returns data. On large datasets, naïve ALTER TABLE commands can take hours, cause timeouts, or trigger replication lag. In distributed systems, mismatched schemas can cause one service to read stale formats while another writes the new shape.
The safest pattern is additive. Deploy first with a nullable column and no constraints. Roll out code that begins reading but not yet writing. Backfill in small, throttled batches, watching load and query plans. Only after the backfill completes—and monitors confirm no errors—switch writes to the new column. Then add constraints if needed.