In databases, adding a new column sounds simple. It is not. Every schema change can break contracts between code and data. The wrong migration can lock rows, spike CPU, or block requests for seconds that feel like hours. That is why you plan each new column operation with precision.
First, decide if the new column should allow nulls. Adding a non-null column with no default forces the database to rewrite every existing row. On large tables, this can crush performance. Choose null with a default only if it is safe for your queries.
Second, apply the change with an additive migration strategy. Write a new migration file that creates the column but does not remove or rename anything yet. Keep old code running until the deployment that reads and writes to the new column has been verified.
Third, backfill data in controlled batches. A bulk update may cause locks or timeouts. Use batched updates with LIMIT and an indexed key to move in small, safe steps.