Adding a new column can be simple in small tables and dangerous in large, production systems. Done wrong, it locks tables, spikes CPU, and triggers downtime. Done right, it ships schema changes to production without a hitch.
First, define the exact purpose of the new column. Define its type, constraints, and default values with precision. In PostgreSQL, avoid ALTER TABLE ... ADD COLUMN ... DEFAULT ... if the table is large; it can rewrite the entire table. Instead, add the column without a default, then backfill data in batches, and finally set the default at the schema level for future inserts. In MySQL with InnoDB, use ALGORITHM=INPLACE where possible to prevent a full table copy.
Backfills must be planned. Use small transactions, commit often, and monitor replication lag if using replicas. In high-traffic systems, schedule the migration during low load hours or use feature flags to roll changes forward in stages.