Adding a new column to a production table is never just an isolated schema change. It shifts indexes, triggers data migrations, and can slow queries if handled without care. In high-load systems, the wrong approach means locks that block writes, replication lag, or sudden spikes in CPU and IO.
The first step is to define the column with the correct type and constraints. Avoid defaults that force a full table rewrite unless they are essential. Use lightweight migrations when available. For large tables, add the new column without a default, then backfill data in batches to keep operations online.
Indexes should come last. Creating them after data migration reduces locking and makes the process easier to roll back. For nullable columns, measure the trade-off between read performance and storage overhead before indexing.