All posts

The database was fast until you needed a new column.

Schema changes sound small. Add a field. Alter a table. But in production, a new column can lock writes, slow reads, and risk downtime. For teams shipping features at scale, these seconds matter. Relational databases store data in fixed blocks. Adding a new column changes the table definition. Depending on the engine—PostgreSQL, MySQL, MariaDB—this can trigger a full table rewrite. On large datasets, that rewrite can hold an exclusive lock. No queries in, no queries out. An ALTER TABLE on a bil

Free White Paper

Database Access Proxy + Column-Level Encryption: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

Schema changes sound small. Add a field. Alter a table. But in production, a new column can lock writes, slow reads, and risk downtime. For teams shipping features at scale, these seconds matter.

Relational databases store data in fixed blocks. Adding a new column changes the table definition. Depending on the engine—PostgreSQL, MySQL, MariaDB—this can trigger a full table rewrite. On large datasets, that rewrite can hold an exclusive lock. No queries in, no queries out. An ALTER TABLE on a billion-row table can take hours.

Modern engines and versions offer improved patterns. PostgreSQL supports ADD COLUMN in constant time if you define it with a NULL default and no NOT NULL constraint. MySQL with InnoDB can sometimes execute metadata-only changes. But the rules are exact, and a missed detail can cause the migration to become blocking.

Continue reading? Get the full guide.

Database Access Proxy + Column-Level Encryption: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Non-blocking schema migrations are the industry norm for zero-downtime deployment. The process is simple in theory:

  1. Add a nullable column without a default.
  2. Deploy code that writes to the new column and reads from both old and new.
  3. Backfill data in small batches to avoid locking.
  4. Add constraints and defaults as a final step.

Automation and migration tools help, but the core principle is to control the change process. Monitor query performance during the operation. Watch for replication lag in read replicas.

A new column can be harmless or destructive. The difference is in the execution. Schema changes are part of the application lifecycle, but in large systems, they are production events that demand planning.

If you want a safer way to test and ship database changes without fear of downtime, see it live in minutes at hoop.dev.

Open source

Save the open-source gateway for agent data access

Hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.

Star and save the repo →More posts