Adding a new column should be simple. In practice, it can cascade into code changes, migrations, downtime risk, and data integrity concerns. How you add it matters. The choices you make affect query performance, storage, replication, and future maintenance.
First, decide if the new column is nullable. Non-null columns with no default will block inserts until every row is updated. Adding a column with a default in large tables can rewrite the entire table, locking it. Using a nullable column or a default that avoids a table rewrite can help keep deployments online.
Second, define the correct type from day one. Changing column types later often requires data conversion. This can be expensive and error-prone, especially under load. Make sure your choice aligns with indexing plans and query patterns.
Third, think about indexing early. Indexing a new column immediately after creation can cause long locks. Stagger the index creation or use concurrent index builds if the database supports it.