The database waited, silent, until the new column arrived. One migration later, every row had more to say.
Adding a new column is not just schema decoration. It alters queries, indexes, and performance profiles. Whether in PostgreSQL, MySQL, or a columnar store, schema changes must be deliberate. The order matters. So does the default value, the nullability, and the constraints.
In PostgreSQL, adding a nullable column without a default is fast—it only updates the metadata. But add a default, and the database rewrites every row. On a large table, that can stall production. In MySQL, the cost depends on the storage engine and version. Modern InnoDB with ALGORITHM=INPLACE is quicker, but it still locks metadata operations.
Use migrations that isolate risk. First, add the column as nullable with no default. Second, backfill the values in controlled batches. Third, apply the constraints when safe. This pattern keeps read and write paths healthy while you evolve the schema.