Thanks for your explanation, makes sense to me :) I tried your suggestion of bumping the `cache_size` in my test script and your theory checks out. For anyone interested: For the single big incremental vacuum: Page Count: 24482 Freelist Count: 24206 Starting one big incremental vacuum Total pages written to WAL: 247 Total pages moved to DB: 247 Page Count: 247 Freelist Count: 0 And for repeated small vacuums: Page Count: 24482 Freelist Count: 24206 Starting 122 calls to incremental_vacuum with 200 pages Total pages written to WAL: 544 Total pages moved to DB: 544 Page Count: 247 Freelist Count: 0