On Tue, Aug 7, 2018 at 12:19 AM, Andrey Lepikhov <a.lepik...@postgrespro.ru> wrote: > I wrote a background worker (hcleaner) to demonstrate application of Retail > IndexTuple deletion (see patch at attachment). > Like Autovacuum it utilizes concept of one launcher and many workers. But > one worker correspond to one database. > > Short description: > Backend collects dirty block numbers by a hash table at the point in code > immediately after heap_page_prune() call. Backend send a package of dirty > block numbers (not one-by-one!) by socket at the end of transaction or if > hash table is full. > Launcher transfers block numbers to correspond workers. > Worker collects dead tuples from a block, clean index relations, clean heap > block. It uses conditional locking with waiting list approach if heap block > are busy. > > hcleaner has experimental status, but make check-world passed
How does this affect ordinary opportunistic pruning? -- Peter Geoghegan