Re: Vacuum: allow usage of more than 1GB of work mem
Masahiko Sawada <sawada.mshk@gmail.com>
From: Masahiko Sawada <sawada.mshk@gmail.com>
To: Simon Riggs <simon@2ndquadrant.com>
Cc: Pavan Deolasee <pavan.deolasee@gmail.com>,
Robert Haas <robertmhaas@gmail.com>, Claudio Freire <klaussfreire@gmail.com>, Greg Stark <stark@mit.edu>,
Tom Lane <tgl@sss.pgh.pa.us>, Jim Nasby <Jim.Nasby@bluetreble.com>,
PostgreSQL-Dev <pgsql-hackers@postgresql.org>
Date: 2016-09-15T15:19:05Z
Lists: pgsql-hackers
On Thu, Sep 15, 2016 at 2:40 AM, Simon Riggs <simon@2ndquadrant.com> wrote: > 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. > Yeah, the chunking approach Robert suggested seems like a good idea but considering implementing parallel vacuum, it would be more complicated IMO. I think It's better the multiple process simply allocate memory space for its process than that the single process allocate huge memory space using complicated way. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
Commits
-
Prefetch blocks during lazy vacuum's truncation scan
- 7e26e02eec90 10.0 landed
-
Explain unaccounted for space in pgstattuple.
- 71f996d22125 10.0 cited