Adding a new column sounds simple. In production, it can be the moment where databases lock, queries stall, and deploys fail. For relational databases, a new column changes structure, storage, and performance in ways that ripple through every connected system.
In PostgreSQL, adding a nullable column with a default value can trigger a full table rewrite. In MySQL, the execution path depends on the storage engine and column type. For massive tables, a blocking migration can halt writes for minutes or hours. This is why seasoned engineers plan schema changes with precision.
Best practice is to create the new column without a default, deploy application code that can handle NULL, then backfill data in batches. Once the backfill is complete, update the schema with the intended default and constraints. This zero-downtime pattern applies to most production systems under load.