The database froze. Queries stacked up. Everything pointed to one change: a new column.
Adding a new column is one of the simplest operations in theory, and one of the most dangerous in production. The moment you alter a table, you touch every row. On small datasets, it finishes in an instant. On tables with millions of records, the lock can stall writes, delay reads, and cascade into outages.
Choosing the right approach starts with understanding impact. Online schema changes allow you to add a new column without blocking queries. Tools like pt-online-schema-change or native ALTER TABLE algorithms in modern databases break the work into chunks. This avoids full table locks and reduces downtime. For write-heavy workloads, batching changes or deploying in maintenance windows can keep systems responsive.
Data type and defaults matter. Adding a nullable column is lightweight. Adding a non-null column with a default forces a table rewrite. On large deployments, this can be catastrophic. Always consider whether you can set defaults at the application level to avoid costly migrations.