Adding a new column sounds simple, but in high-traffic systems, the wrong approach can lock tables, spike CPU, and stall critical requests. The safest path depends on database type, version, and workload. Done well, you add structure without disruption. Done poorly, you trigger downtime.
In PostgreSQL, use ALTER TABLE ADD COLUMN for small additions without defaults or constraints. This is usually instant. For large datasets, adding a column with a DEFAULT on older versions rewrites the entire table. In that case, add it nullable first, then backfill in batches, and finally set the default and constraints.
In MySQL, ALTER TABLE can cause locking on large tables. With InnoDB and modern versions, ALGORITHM=INPLACE or ALGORITHM=INSTANT reduces or eliminates downtime. Instant DDL in MySQL 8.0 lets you add columns without copying data. Always confirm capabilities with SHOW VARIABLES LIKE 'version%'; and test on a staging copy before production.
For distributed databases like CockroachDB or Yugabyte, schema changes are metadata-only but still propagate across nodes. Monitor for replication lag before and after applying changes.