Adding a new column sounds simple, but in production systems it can be the most dangerous schema change you make. It touches structure, performance, and deployment workflows all at once. Done right, it unlocks new features without downtime. Done wrong, it locks your users out.
The first step is knowing why the new column exists. Define the type, constraints, and default values before you write any migration script. Think about indexing. Every index is a trade-off between query speed and write performance.
When the database holds millions of rows, adding a column with a default value can lock the table. This is why online schema change tools exist. In MySQL, consider pt-online-schema-change or native hot alter features. In PostgreSQL, adding a nullable column is instant, but adding it with a default requires care. Break it into two steps: add the column without the default, then backfill asynchronously, then set the default.