Adding a new column in a production database sounds simple until you hit the edges. Schema changes lock tables. Migrations stall. An ALTER TABLE that looked harmless in staging can freeze critical writes in prod. The cost of downtime here is high—seconds can mean lost data, delayed processing, or timeouts cascading across services.
A clean approach starts with understanding your database engine. In PostgreSQL, adding a nullable column with a default can rewrite the entire table. MySQL may block writes for the duration of the change unless you use tools like pt-online-schema-change or built-in algorithms optimized for InnoDB. Modern managed services provide online DDL options, but you must confirm behavior for your specific workload.
Design the new column carefully. Choose the correct data type the first time. Avoid unbounded text where integers or enums reduce storage and index size. Optional columns should default to NULL until backfilled; this avoids heavy locks and lets you populate in batches.