Schema changes are simple in theory and dangerous in production. A new column can break application logic, lock tables, or slow every query. The wrong approach invites downtime. The right approach is fast, atomic, and safe.
First, decide the column type. Use the smallest data type that serves the purpose. Over-allocating kills performance. Then, define whether it can be NULL or has a default. Defaults should be constant values when possible, to avoid table rewrites in certain databases.
In PostgreSQL, adding a nullable column is instant. Adding a column with a constant default value can also be instant in recent versions. In MySQL, adding a new column often triggers a table copy unless you use ALGORITHM=INSTANT on supported versions. Always check the exact engine and version before running the migration.