If you’ve run PostgreSQL in production long enough, you’ve either caused this incident or watched someone else cause it: a Friday afternoon schema change, a table with tens of millions of rows, and a ALTER TABLE statement that looked completely harmless in a staging environment with 200 rows. Then production connections start queuing. Then the connection pool exhausts. Then the on-call pager goes off. The Mechanism, Precisely PostgreSQL’s ALTER TABLE takes an ACCESS EXCLUSIVE ...