Adding a new column to a production database sounds simple. It is not. Schema changes can lock tables, block writes, and choke queries. The risks grow with table size, traffic volume, and replication lag. When the database slows, everything slows.
A new column alters the shape of the data model. This changes how indexes work, how queries are planned, and how cache layers respond. In PostgreSQL, ALTER TABLE ADD COLUMN is fast for nullable columns with defaults defined as NULL. But adding a non-null column with a default forces a table rewrite that can stall production for minutes or hours. MySQL has similar pain points without online DDL enabled.
To reduce downtime, create the new column first as nullable with no default, backfill in controlled batches, then add constraints. Use feature flags to separate schema deployment from application logic. This avoids race conditions where the app expects the column before it exists or ignores it after it’s live.