A new column in a relational database alters the structure of a table. This triggers a rewrite of metadata, and depending on the engine, can rebuild the table rows. In MySQL with InnoDB, adding a nullable column without a default is often instant. Adding a non-null column with a default value can be a full table copy. PostgreSQL can avoid a table rewrite if you add a nullable column or one with a constant default that does not require touching every row physically.
The safest approach is to run schema changes in small steps. First, add the column as nullable without defaults. Then backfill data in batches. Finally, apply NOT NULL constraints or indexes only after the backfill completes. This minimizes lock time and reduces impact on concurrent writes.
Migrations should always run through version control and be tested against production-sized datasets. Benchmark the change in a staging environment with live-like queries. Monitor replication lag if your system uses replicas, and run the migration during low-traffic windows for additional safety.