A new column in a database table looks simple. One line in a migration script. But in production, that one line decides if your app keeps running or goes dark. Schema changes are high risk because they touch live data, indexes, queries, and replication.
Adding a new column in PostgreSQL or MySQL can be instant or it can lock the table for minutes. The difference depends on the column type, default value, and how the migration is structured. A NOT NULL column with a default will rewrite the table. On large datasets, that means downtime. Skip the default, set it nullable, backfill in small batches, then add constraints later.
In distributed systems, a new column forces you to think about backward compatibility. API endpoints, background jobs, and ETL pipelines may not understand the change. Deploy your code in stages so old services ignore the column until new ones use it. Use feature flags to control rollout, and monitor queries for unexpected load.