Adding a new column changes the shape of your data. It sounds simple. In production, it is not. It touches migrations, indexes, queries, and the applications that read and write. One wrong step, and downtime or data corruption follows.
The first rule: know your database engine. In PostgreSQL, ALTER TABLE ADD COLUMN is fast if the column is nullable or has a default that can be stored without rewriting every row. In MySQL, the result depends on the storage engine and version. Always check the documentation for your exact environment before touching live data.
The second rule: plan the default values and constraints. A new column with NOT NULL must have a default or pre-populated data, or the migration fails. If you add indexes, understand the write amplification. Each additional index slows inserts and updates. Do not add more than the queries demand.
The third rule: roll out in steps. In high-traffic systems, adding a column and deploying the code that uses it should be separate operations. Migrate first, then make the application aware. This avoids crashes from code expecting the column before it exists.