Adding a new column should be fast, safe, and simple. But in production systems, schema changes can slow queries, lock rows, or take entire workflows offline. When the data set is huge, adding columns without a plan can turn a short migration into a multi-hour incident.
A new column can be created with a single SQL command:
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
In small test databases, this happens instantly. In production, the database engine rewrites rows and updates metadata. On PostgreSQL, older versions hold a lock until the operation finishes. MySQL might block writes. Modern PostgreSQL with ADD COLUMN ... DEFAULT can avoid a full rewrite if you set the default to NULL and backfill later.
Best practice is to add the new column without a default, deploy the change, then run a background job to populate values. This avoids long locks and lets you monitor performance impact. If the column is for a future feature, add it early so backfills can run slowly during off-peak hours.