Adding a new column is one of the most common schema changes in production systems. It sounds simple, but done carelessly, it can crush performance, lock tables, or break dependent services. The key is to plan the migration so it happens without downtime and without surprises in the integration layer.
Start by defining the new column in a way that fits your data model long-term. Choose the smallest data type that works. Set defaults only if they make sense for all existing rows; otherwise use NULL and backfill in a separate step. Avoid expensive constraints until the column is populated.
For large tables, use an online schema change method. Many relational databases now support non-blocking ALTER TABLE ADD COLUMN operations, but engine specifics still matter. In MySQL or MariaDB, tools like pt-online-schema-change or gh-ost let you add a new column with minimal load. In PostgreSQL, adding a column without a default is instant, but adding with a default rewrites the table — plan around it.