Re: Vacuum: allow usage of more than 1GB of work mem
Simon Riggs <simon@2ndquadrant.com>
From: Simon Riggs <simon@2ndquadrant.com>
To: Pavan Deolasee <pavan.deolasee@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>,
Masahiko Sawada <sawada.mshk@gmail.com>, Claudio Freire <klaussfreire@gmail.com>, Greg Stark <stark@mit.edu>, Simon Riggs <simon@2ndquadrant.com>, Tom Lane <tgl@sss.pgh.pa.us>, Jim Nasby <Jim.Nasby@bluetreble.com>,
PostgreSQL-Dev <pgsql-hackers@postgresql.org>
Date: 2016-09-14T17:40:00Z
Lists: pgsql-hackers
On 14 September 2016 at 11:19, Pavan Deolasee <pavan.deolasee@gmail.com> wrote: >> In >> theory we could even start with the list of TIDs and switch to the >> bitmap if the TID list becomes larger than the bitmap would have been, >> but I don't know if it's worth the effort. >> > > Yes, that works too. Or may be even better because we already know the > bitmap size requirements, definitely for the tuples collected so far. We > might need to maintain some more stats to further optimise the > representation, but that seems like unnecessary detailing at this point. That sounds best to me... build the simple representation, but as we do maintain stats to show to what extent that set of tuples is compressible. When we hit the limit on memory we can then selectively compress chunks to stay within memory, starting with the most compressible chunks. I think we should use the chunking approach Robert suggests, though mainly because that allows us to consider how parallel VACUUM should work - writing the chunks to shmem. That would also allow us to apply a single global limit for vacuum memory rather than an allocation per VACUUM. We can then scan multiple indexes at once in parallel, all accessing the shmem data structure. We should also find the compression is better when we consider chunks rather than the whole data structure at once. -- Simon Riggs http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Prefetch blocks during lazy vacuum's truncation scan
- 7e26e02eec90 10.0 landed
-
Explain unaccounted for space in pgstattuple.
- 71f996d22125 10.0 cited