Adding a new column in a live database should be simple. Often it is not. Schema migrations block requests. Downtime costs revenue. Bad defaults bloat tables. Engineers work around the risk, and features ship late.
A new column is more than ALTER TABLE ADD COLUMN. It changes schema contracts that every client, job, and worker depends on. The safest method is to make it backward compatible. Add the column as nullable or with a lightweight default. Avoid locking writes on high-traffic tables. Use batched backfills if you need to populate data. Deploy in phases: schema first, code after.
For relational databases like PostgreSQL and MySQL, remember that adding a column with a non-null default rewrites the table. This can lock it for long periods on large datasets. Adding the column nullable, deploying, then updating rows in small chunks is faster and more reliable. Use transactional DDL where supported, but measure execution time before production changes.