Adding a new column sounds simple. In most systems, it is not. Schema changes trigger downtime, table locks, or fragile migrations that blow up under real traffic. At scale, a careless ALTER TABLE can freeze writes or cause replication lag. Production databases do not forgive slow queries or blocking operations.
The right approach depends on the database engine, query patterns, and load profile. With PostgreSQL, adding a nullable column without a default is fast and metadata-only. Adding a column with a default in older versions rewrites the entire table, locking it for the duration. MySQL behaves differently, and depending on the storage engine, even metadata-only changes can cascade into copy operations.
Every add column migration needs a plan. Use feature flags to gate reads from the new field until the schema is confirmed. Backfill data in small batches to avoid long transactions and table bloat. Monitor replication lag closely if you run replicas. Roll forward without breaking older code paths that still expect the previous schema.