PostgreSQL 19 adds a command called REPACK. It reclaims the space VACUUM leaves behind by rewriting the table, which is what VACUUM FULL does, and it can rewrite in index order, which is what CLUSTER does. Two old commands folded into one.
The reason to care is the option on the end. REPACK (CONCURRENTLY) does that rewrite while the table stays readable and writable.
It is in beta 3 as I write this, so none of this is production advice yet. But it is worth knowing now, because one of the restrictions is something you would want to fix on your own schedule rather than discover during an upgrade.
What the lock actually costs
Everybody knows VACUUM FULL takes an ACCESS EXCLUSIVE lock. Far fewer people have watched what that looks like from the application side, so I built a bloated table and pointed traffic at it while the maintenance ran.







