Adding a new column to a database table seems simple. It is not. Done wrong, it can stall queries, lock writes, and create downtime. Done right, it gives new capabilities without risk.
The first checkpoint is the database engine. In MySQL, ALTER TABLE can block operations if the table is large. PostgreSQL handles column additions faster if you avoid defaults that require a full rewrite. In distributed systems like CockroachDB or Yugabyte, schema changes propagate asynchronously, but still need careful rollout.
Check the column type. Adding a nullable column without defaults is fastest. Adding a column with a default value is slower because each row update takes time. If you need defaults, consider populating them in a backfill job after the column exists.
Plan for versioned deployments. Add the column first. Deploy code that can write to both old and new fields. When reads confirm consistency, switch fully to the new column. In high-traffic systems, run this as a multi-step migration.