Adding a new column is supposed to be simple. In reality, it can break production if done wrong. It can lock tables, slow queries, and cascade failures through services. The key is to design the change, deploy it safely, and ensure zero downtime.
A new column should fit the data model without creating hidden constraints. Choose a clear name, correct type, and sane defaults. Avoid adding NOT NULL constraints up front unless you can backfill instantly. Plan for nullability and index implications from the start.
In PostgreSQL, adding a nullable column without a default is fast. Adding one with a default rewrites the table unless you use DEFAULT with NULL followed by an UPDATE in small batches. In MySQL, the cost depends on engine and version—some support instant add column operations. Always confirm behavior in a staging database with production-sized data.