Adding a new column seems simple. In production, it can break queries, overload your writes, or lock the table for longer than your SLA allows. The safest way to add a new column depends on your database, your traffic, and your tolerance for risk.
In PostgreSQL, adding a nullable column with no default is instant. Adding a default value will rewrite the table if you use an older version. In recent versions, a constant default avoids a full rewrite but still needs the catalog change. In MySQL, adding a column often requires a table copy unless you use ALGORITHM=INPLACE with supported storage engines. In high-traffic systems, these differences matter.
Plan for zero downtime. Use schema migration tools that can run online changes. Deploy schema updates separately from application changes. First, add the new column as nullable. Then backfill data in small batches. Finally, change nullability or add constraints once the column is populated. This reduces lock time and avoids blocking reads or writes.