Adding a new column is rarely just adding a field. It redefines contracts between services. It changes API payloads. It alters indexes, query plans, and caching strategies. In distributed systems, it can ripple across shards, replicas, and queues.
The correct process starts in design. Choose a clear name. Decide type and nullability. Consider default values carefully — a poorly chosen default can hide bugs for months. Avoid schema drift by documenting the column in the same commit or pull request that adds it.
For relational databases, a new column may require a full table rewrite. On large datasets, that means planning downtime or using techniques like online schema changes. In PostgreSQL, ADD COLUMN with a non-null default rewrites the table; in MySQL, it may lock writes. For high-traffic systems, run migrations in stages: add the nullable column first, backfill in batches, then enforce constraints.