Adding a new column is one of the most common schema changes in production systems. It sounds simple, but it touches performance, migrations, backward compatibility, and deployment workflow. The wrong approach can lock tables, block writes, and trigger cascading failures. The right method keeps services live without interrupting traffic.
First, define the new column in a way that does not block reads or writes. In most relational databases—PostgreSQL, MySQL, MariaDB—adding a nullable column without a default is instant, because no data backfill occurs. If you must backfill, do it in batched updates to avoid locking. Use transactional DDL only when the engine supports it without table rewrites.
Second, plan for application-level awareness. Ship code that can read and write older and newer schemas. Deploy in phases: