The build froze. A single database migration was still running, stuck on a schema change. The change? Adding a new column.
A new column sounds small. It is not. It can lock writes, block reads, and stall production traffic if executed without care. In high-volume systems, schema changes are dangerous because they affect running queries, cache consistency, and replication lag.
When you add a new column, think first about the storage engine. For MySQL with InnoDB, ALTER TABLE can trigger a full table copy unless you use online DDL variants. In PostgreSQL, adding a column with a default value rewrites the table, but adding one without a default is fast. Large datasets make these differences matter.
Plan for concurrency. Ensure background jobs, API endpoints, and ETL processes are ready to handle the new schema. Deploy code that can work with and without the new column before the migration. Use feature flags to control when the application begins writing to it.