Adding a new column sounds simple. In practice, it can decide between a clean rollout and production downtime. The mechanics matter: data type, nullability, default values, indexing, and migration strategy all play into performance and reliability.
Before adding a new column, decide if it belongs in the table at all. Check normalization. If the data is repeated or denormalized without cause, you risk future complexity. Once confirmed, select the smallest data type that fits current and future needs. Smaller types improve cache hits and reduce I/O. For text, consider length limits and collation to match query patterns.
Null or not null is more than a toggle. A NOT NULL column without a default requires a full rewrite of existing rows during creation. Adding a default can also create a massive lock if not done with a phased migration. Break operations into steps: first add the column as nullable, then backfill in batches, then enforce constraints.