Adding a column is one of the most common schema changes in relational databases, but it can also be the most dangerous if done without planning. The wrong data type or a careless default can lock tables, block writes, or slow production to a crawl. To do it right, you focus on three things: definition, performance, and deployment.
First, define the new column with absolute clarity. Choose the smallest data type that holds the full range of expected values. Keep it nullable if backfilling data will take time, then enforce constraints after the migration. This reduces the risk of blocking writes during the update.
Second, consider performance impact. On large tables, adding a column with a default value can rewrite the entire table, triggering massive I/O. Instead, add it without a default, backfill in controlled batches, and then set the default in a separate step. Always measure the UPDATE cost before running it live.