Adding a new column is not just a schema change. It shifts how data lives, moves, and serves the system. Get it wrong and you ship downtime, broken queries, and migrations that lock your application. Get it right and you open new capabilities without slowing a single request.
In relational databases, a new column can mean different things depending on your engine and scale. In PostgreSQL, adding a nullable column with a default can trigger a full table rewrite in older versions. In MySQL, an ALTER TABLE might block writes unless you use ONLINE algorithms. In distributed systems, schema changes can ripple across shards and replicas, forcing coordinated rollouts with strict ordering.
Best practice is to design the new column with minimal lock time. Add it as nullable without a default, then backfill in controlled batches. Apply the default in a later migration. Each step should be reversible. Monitor read and write latency in real time during the change.