Adding a new column sounds simple. In reality, it touches storage, queries, indexes, caching, and API contracts. Done wrong, it can lock tables, drop performance, and break production. Done right, it is fast, safe, and invisible to the user.
First, define the purpose and type of the new column. Match the data type to real usage, not guesswork. Keep it narrow to save space and speed scans. Avoid NULL defaults unless absolutely required; explicit defaults are easier to reason about.
Second, plan the migration. In large tables, an ALTER TABLE ADD COLUMN can block reads and writes. Use online schema changes or phased rollouts. Many teams run migrations in multiple steps: add the new column, backfill in small batches, then switch the application to write and read the new field.
Third, update the codebase. Add writes for the new column first. Deploy. Then add reads. Deploy again. Remove old logic last. This minimizes downtime and rollback risk.