A new column changes the shape of your data. It alters schemas, migrations, performance, and the way your application code interacts with storage. Done right, it’s a precise operation. Done wrong, it locks tables, blocks writes, and forces downtime you can’t afford.
The first decision is type. Integer, string, boolean—choose for function, not guesswork. The second is default values. They decide how existing rows behave before your code adapts. Avoid setting non-null defaults on massive tables unless you apply them in smaller, iterative batches.
Use migrations that respect production scale. In PostgreSQL, add nullable columns first, then backfill in controlled chunks. In MySQL, consider online schema change tools to keep services up. Always measure impact on indexes. Adding an indexed new column can slow inserts; delay indexing until after data is populated.