Adding a new column sounds simple. It is not. A poorly planned column change can block deploys, lock tables, break queries, and cause outages. Whether you are working in PostgreSQL, MySQL, or any modern database, the approach matters.
When you create a new column, decide first if it should allow NULLs. If it should not, set a default value during creation. This avoids rewrites of massive tables and reduces downtime. Use ALTER TABLE ... ADD COLUMN with a constant default to let the database fill the column efficiently.
For live systems with heavy writes, add the new column in two steps. First, make it nullable with no default. Deploy and let it ship with zero lock impact. Then backfill values in batches under controlled load. Finally, add constraints and defaults in a second migration. This avoids long table locks while still enforcing rules.