Schema changes should be simple. In practice, adding a new column can lock tables, break queries, and trigger long migrations. A single ALTER TABLE can become a point of failure in production. Downtime and blocked writes are the hidden costs.
Engineers face the same questions every time: Should the new column be nullable? Should it have a default value? How will existing data be backfilled? Can we add an index later without impact? These are not theoretical problems. Each choice affects performance, replication, and deploy speed.
In relational databases like PostgreSQL and MySQL, adding a column with a default value can rewrite the entire table. This can halt large datasets for minutes or hours. Systems with zero-downtime requirements need safer patterns. Online schema change tools, phased rollouts, or feature flags can help. First, add the column as nullable with no default. Then backfill in batches. Finally, enforce constraints once the data is ready.