When a system grows, schemas bend. Queries slow. Migrations fail under load. The need for a new column is never just about storage — it’s about precision, speed, and future-proofing. The wrong approach can lock a production database for minutes or hours. The right one can roll out without a whisper.
A new column changes the shape of data. It affects indexes, application code, and API contracts. Adding one in PostgreSQL with ALTER TABLE can be instant for nullable columns without defaults, but expensive if you set a default that touches every row. In MySQL, online DDL helps, but not in every engine or table type. For distributed SQL, replication lag and shard rebalancing can drag deployments down if you don't stage carefully.
Best practice is to deploy in steps. First, add the column as nullable with no default. Then backfill in small batches, watching query plans and I/O. Only after that should you enforce constraints or make it non-null. This keeps writes and reads steady while the schema shifts underneath.