Database Concurrency & Scaling interview question · Most asked

How do you rename a column with zero downtime?

Summary

Expand/contract: add the new column, deploy code that writes both and backfill in batches, switch reads to the new column, and drop the old one only after no running code uses it.

Longer Answer

During rolling deploys old and new code run against the same schema, so every step must work with both. Use online DDL (CREATE INDEX CONCURRENTLY, NOT VALID constraints then VALIDATE, ALGORITHM=INSTANT, gh-ost for large MySQL tables) and set lock timeouts on migrations.

Key Points

  • Old and new code coexist
  • Expand → migrate → contract
  • Batched backfill
  • Online DDL + lock timeouts

Deep dive: Zero-Downtime Schema Changes

More most-asked Database Concurrency & Scaling questions

← All Database Concurrency & Scaling questions