Every database change looks simple until it runs in production under load. Adding a new column can break indexes, lock rows, throw migrations into chaos, or trigger unexpected downtime. The cost is not in the syntax—it’s in the impact.
A new column alters storage. It changes query plans. It can lengthen replication lag and grind background jobs into a backlog. Even a small column adds weight to every row, every read, every write. At scale, that weight multiplies.
Plan migrations with precision. Use ALTER TABLE with concurrent operations where supported. In PostgreSQL, add columns with NULL defaults to avoid table rewrites. If you must backfill data, do it in batches and monitor system health. Never assume the migration ends when it finishes; check query performance after the change.