Adding a new column should be simple. It is not. In production systems, it can stall deploys, break queries, and lock tables. The wrong approach turns a schema change into hours of downtime. The right approach makes it invisible.
A new column in a relational database changes the structure of a table. Depending on the database engine, size of the data, and constraints, the impact can range from instant to catastrophic. MySQL with MyISAM locks the entire table. PostgreSQL may require a rewrite if you set a default value. In both cases, migrations on large tables can block reads and writes.
To add a new column safely, start with an audit. Check table size, indexes, triggers, and foreign keys. Run EXPLAIN on key queries. Decide whether you can apply the change in a single fast DDL statement or need a phased migration.
For phased changes, create the new column as nullable with no default. Deploy. Backfill data in small batches using lightweight update jobs. Once complete, enforce constraints and add defaults in a second migration. This reduces transaction locks and avoids full-table rewrites.