Adding a new column to a production database is simple in theory but dangerous in practice. Done wrong, it can lock tables, block writes, or break queries. The key is choosing the right approach for your database engine, data size, and uptime requirements.
In PostgreSQL, use ALTER TABLE ADD COLUMN for instant metadata changes on empty columns with default NULL. Avoid setting a default value that forces a full table rewrite unless required. For MySQL with large datasets, consider ONLINE DDL when supported to prevent downtime. In distributed systems like CockroachDB, schema changes are asynchronous by design but still demand monitoring for propagation and job completion.
A new column must be defined with clarity: name, data type, default behavior, and constraints. Avoid ambiguous names. Future queries and indexes depend on these choices. If the column will be indexed, measure index creation cost and read/write performance impacts.