Adding a new column is one of the most common schema changes in any production system. It should be fast, safe, and reversible. Done poorly, it can lock tables, drop performance, and stall deploys. Done right, it becomes invisible to the end user.
Start by defining the column precisely. Name it for function, not whim. Set its type for the smallest viable range. Avoid null defaults unless they serve a real purpose. If the column must store computed or derived data, decide whether to populate it on write or backfill asynchronously.
When adding the new column to a live database, use tools or migrations that respect production constraints. For larger tables, consider online schema change utilities that avoid full table locks. If the platform supports it, execute ALTER TABLE ... ADD COLUMN with minimal blocking. Watch for implicit defaults that can force a rewrite of the whole table.
If you need existing rows populated, backfill in controlled batches. This prevents spikes in CPU, IO, and replication lag. Monitor index changes closely. Adding an index to a fresh column on a wide table can be more costly than the column itself.