The migration stalled. Forty thousand rows waited for a new column, and every query in production was choking on the missing field.
A new column looks simple in schema diagrams, but it’s the fault line where performance, consistency, and deployment safety collide. Whether you’re working with PostgreSQL, MySQL, or a distributed data store, adding a column at scale can block writes, trigger locks, or create data drift if replication lags. The schema change strategy matters more than the syntax itself.
In PostgreSQL, ALTER TABLE ADD COLUMN is instant for metadata-only changes like nullable columns without defaults, but dangerous for non-null columns with populated defaults—those require a full table rewrite. MySQL can apply fast DDL for some changes under InnoDB, but large tables may still experience locks unless using ALGORITHM=INPLACE or INSTANT. In a distributed SQL environment, adding a new column can demand coordinated versioning and backward compatibility in both read and write paths.