Adding a new column sounds simple. It can be. But production systems punish naïve changes. Schema updates can lock tables. They can stall writes. They can block reads. The wrong migration can bring an application down.
A new column should be planned with precision. First, determine the data type. Match it to the intended use. Avoid conversions later—they cost time and stability. Keep defaults lean. Adding a DEFAULT on a large table in one step can force a full rewrite. If you just need the column, create it without default and backfill in controlled batches.
Use ALTER TABLE sparingly on massive tables. On PostgreSQL, adding a new nullable column is safe and fast. On MySQL, behavior depends on the storage engine. Test against a copy of your production dataset before deploying.
Think about indexes. A new column often tempts a new index. But indexing too early increases migration duration and locks. Create the column first. Add the index only after verifying actual query needs.