Adding a new column can be simple, but only if you treat it with precision. Careless schema changes cause downtime, data loss, or silent bugs. Decide first if the column is nullable, has a default value, or must be backfilled. Each choice changes the performance profile of the migration. For large tables, run the change in a non-blocking way or in stages.
In PostgreSQL, a new nullable column with a default of NULL is instant. Adding a column with a constant default rewrites the table. That rewrite locks the table and can stall queries. In MySQL, the engine and configuration decide how online the change will be. Test on a replica before touching main. Always measure how the ALTER statement affects locking, query plans, and replication lag.
If the column depends on computed data, populate it with batches and monitor for errors. Backfills should be idempotent and resumable. Fail once, and you should be able to restart without corrupting rows.