The database was slowing down, and the numbers told the truth. You needed a new column. Not a guess, not a someday change—an immediate structural shift. Adding a new column in a production database is simple to describe but dangerous to do without care.
A new column changes the schema. It alters how data is written, read, and indexed. Even a single nullable field can cause heavy locks, degraded performance, or replication lag if executed poorly. The operation touches storage allocation, query planning, and application compatibility.
First, decide what type the new column should be. Choose the smallest type that fits all realistic values. This keeps storage lean and reduces cache impact. Next, determine if it should allow nulls. Default values can help with legacy rows but force a write on every record, which can be slow on large tables.
For zero-downtime changes, avoid direct ALTER TABLE on huge datasets in busy systems. Use phased migrations. Create the new column asynchronously. Backfill data in batches. Update the application code to use the new field only after the backfill is complete. Add indexes last, after the data is stable.