A schema change is never just a change. Adding a new column shifts the shape of data, alters queries, and impacts every service that touches that table. Done wrong, it leads to downtime, locked writes, and broken deployments. Done right, it flows into production without a ripple.
The first step is clarity. Define why the new column exists before you write a single migration. Is it to store a computed value? To track metadata? To handle a feature toggle? This purpose drives its data type, default value, nullability, and indexing strategy. Once this is set, you can design the change without guessing.
In relational databases like PostgreSQL or MySQL, adding a new column can be an instant metadata operation, or a costly rewrite, depending on constraints. Large tables demand careful planning—assess the lock behavior, run it in a staging clone, and measure execution time. For zero downtime, use online schema migration tools or rolling updates across replicas.