Adding a new column should be simple, but in production it is where speed, safety, and compatibility collide. Schema changes alter the shape of your data. If you deploy without care, you get downtime, broken queries, or corrupted rows.
Start with clarity. Decide if the new column is nullable, has a default, or needs backfilled data. Nullability controls risk. Defaults affect write performance during creation. Backfills can block the database under heavy load.
In PostgreSQL, ALTER TABLE ADD COLUMN is fast when the column is nullable with no default. Adding a default writes to every row. For MySQL, adding a column often rewrites the entire table—plan maintenance windows accordingly. In distributed databases like CockroachDB, schema changes run asynchronously, which avoids locks but can create temporary state differences.
Think about indexing. Do not add an index to a new column until you confirm how it will be queried in production. Post-deployment index builds can be run concurrently to avoid blocking writes.