Adding a new column should be fast, predictable, and safe. But in production systems, even a simple schema change can be risky. Table size, locks, and deployment timing can turn a routine migration into a full-on incident. To get it right, you need to understand your database engine, your application load, and the migration path.
A new column means changing the data definition language (DDL). In MySQL, ALTER TABLE can lock writes; in PostgreSQL, certain changes are instant while others require a rewrite. On large datasets, adding a column with a default value can trigger a full table rewrite. This impacts performance and availability.
Best practice: add the column without a default, let the code handle missing values, and backfill in small batches. Use feature flags to roll out the column in application code before writing dependent queries. Monitor query plans—adding a new column can affect indexes and storage.