Adding a new column should be simple. In practice, it can be a breaking change, a performance hit, or a migration nightmare. The cost depends on the database engine, the schema design, and the constraints in play.
In relational databases like PostgreSQL or MySQL, adding a new column with a default value can trigger a full table rewrite. On large datasets, this stalls writes, eats I/O, and delays deploys. Adding a nullable new column without a default is often faster, but shifts the cost to the application layer. You must update queries, handle nulls, and ensure data integrity without blocking production traffic.
In NoSQL systems, schema changes are often implicit, but that doesn’t make them free. Every reader and writer must handle both old and new document shapes at the same time. Without versioning, mismatched serialization logic can corrupt data or break APIs.