Adding a new column should be fast, safe, and clear. The approach depends on scale, uptime requirements, and the database engine in use. In MySQL, ALTER TABLE is the direct route, but on large datasets it can trigger a table lock and block writes. In PostgreSQL, adding a column without a default is near-instant, but adding a default value will rewrite the table unless done in two steps.
For production systems, schema changes must be deliberate. Always run them in a transaction if possible. Test migrations in staging with production-like data. Monitor query performance before and after. For critical paths, online schema change tools like pt-online-schema-change or native PostgreSQL concurrent operations can reduce downtime.
Name the new column for clarity and maintainability. Use consistent casing and never overload a column with multiple meanings. Decide on nullability: allowing NULL can ease deployment, but may force extra handling later. Default values help preserve compatibility with existing code but may impact migration speed.