Does *every* table have *so much* free space that it's impractical to just
let the files just get refilled by normal usage?

Ideally VACUUM FULL should not require a giant lock on the table.

Sometimes a table's usage pattern involves much more updates than inserts, which gradually uses more and more unused space that is never used again by postgres, and plain autovacuuming doesn't return it to the OS. So DB size (as witnessed by psql's \l+) uses 5-6x times the space it actually needs. And using vacuum full is prohibitive because of the exclusive lock it takes on the table, preventing both writes and reads. Since rewriting a table is a completely internal operation from clients' POV, hopefully one day we will see a concurrent version of vacuum full.



Reply via email to