Adding a new column can look simple. A single line of SQL. An ALTER TABLE statement. Push it and move on. But in production, simplicity is a lie. A new column can lock writes, stall queries, and put the system at risk if you treat it like a trivial change.
In modern relational databases, adding a new column touches storage, indexing, and application logic. In PostgreSQL, adding a nullable column without a default is fast, done in constant time. But adding a column with a default rewrites the table. On massive datasets, this means minutes or hours of blocked writes. MySQL and MariaDB behave differently depending on engine and version. With InnoDB, an instant ADD COLUMN exists in newer versions, but legacy environments still require full table rebuilds.
Migrations must be planned. To add a new column safely, you often split the change into steps. First, add the column as NULL. Second, backfill data in controlled batches. Third, set the default and constraints once the table is ready. This pattern avoids downtime. For distributed systems, the deployment order matters. Rolling updates must allow application and database to stay compatible at each step.