One migration, one schema update, one field in the right place — and the data model shifts. A new column can store what was missing, reduce joins, or improve query performance. Done well, it unlocks new features without rewriting the entire backend. Done poorly, it slows the database, breaks integrations, and increases technical debt.
In SQL, adding a new column sounds simple:
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
But in production, the impact is real. Table size grows. Indexes may need updates. Null defaults must be handled. Application code has to read and write the new column without breaking existing logic. Every query touching that table should be tested for the change in shape and size.
For systems with high traffic, altering large tables can lock writes or cause replication lag. In PostgreSQL, some column additions are fast; others require a full rewrite of the table. In MySQL, certain operations can block for longer than you expect. Without planning, downtime is easy to trigger.