Adding a new column should be simple. In practice, it often breaks production when done carelessly. Schema changes carry risk: locks on large tables, missing default values, or mismatches between application code and the database definition.
A new column alters the shape of your data. Direct changes in a live environment can slow queries or block writes. On high-traffic systems, even a single ALTER TABLE ADD COLUMN can cascade into downtime. The best approach is to plan, test, and deploy with minimal impact.
First, ensure backward compatibility. Add the new column without dropping or modifying existing ones. Use nullable defaults if possible so old code keeps working. If the column will hold a computed value, backfill in small batches to avoid I/O spikes.
Second, deploy in phases. Add the column in one migration. Migrate reads and writes in a separate release. This keeps the database and application in sync while limiting rollback complexity.