Adding a new column can be trivial—or it can freeze production. The difference comes from how you design, deploy, and backfill. In relational databases like PostgreSQL or MySQL, adding a column locks the table unless you use non-blocking migrations. On high-traffic tables, that lock can block writes, cause replication lag, or overwhelm your connection pool.
The safest process starts with schema change tooling that supports ALTER TABLE without full table rewrites. Some engines handle adding a nullable new column instantly. Others require creating a shadow table, copying rows in batches, and swapping in place. For large datasets, you often delay adding NOT NULL or default constraints until after backfilling. This minimizes downtime and keeps queries responsive.
Adding a new column in ORM-based systems requires aligning both the database and the application. Deploy the application to tolerate the absence of the column before the migration runs. Only after the schema is live should you deploy the code that assumes the new column exists. This prevents race conditions and failed inserts.