Re: New VACUUM FULL - Mailing list pgsql-hackers
From | Jeff Davis |
---|---|
Subject | Re: New VACUUM FULL |
Date | |
Msg-id | 1258234860.708.158.camel@jdavis Whole thread Raw |
In response to | Re: New VACUUM FULL (Itagaki Takahiro <itagaki.takahiro@oss.ntt.co.jp>) |
Responses |
Re: New VACUUM FULL
|
List | pgsql-hackers |
On Fri, 2009-11-13 at 10:47 +0900, Itagaki Takahiro wrote: > Alvaro Herrera <alvherre@commandprompt.com> wrote: > > > BTW I think the vacstmt.options change, which seems a reasonable idea to > > me, could be extracted from the patch and applied separately. That'd > > reduce the size of the patch somewhat. > > It's a good idea. I separated the part into the attached patch. > It replaces VacuumStmt's "vacuum", "full", "analyze", and "verbose" > fields into one "options" flag field. > > The only user-visible change is to support "VACUUM (options)" syntax: > VACUUM ( FULL, FREEZE, VERBOSE, ANALYZE ) table (columns) > We don't bother with the order of options in this form :) > > There is a debatable issue that we can use "VACUUM (VERBOSE) table (col)" > in the abobe syntax. Columns are specified but no ANALYZE option there. > An ANALYZE option is added automatically in the current implementation, > but we should have thrown an syntax error in such case. I have just begun review by reading some of the previous threads. I'd like to try to summarize the goals we have for VACUUM to put these patches in perspective: 1. Implement a rewrite version of VACUUM FULL, which is closer to CLUSTER. 2. Use the new options syntax, to make the order of vacuum options irrelevant. 3. Implement several flatfile maps to allow the rewrite version of VACUUM FULL to work on catalogs: http://archives.postgresql.org/message-id/19750.1252094460@sss.pgh.pa.us 4. Implement some kind of concurrent tuple mover that can slowly update tuples and lazily VACUUM in such a way that they migrate to lower heap pages (assuming no long-running transactions). This would be done with normal updates (new xmin) and would not remove the old tuple until it was really dead; otherwise there are concurrency problems. Such a utility would be useful in cases where a very small fraction of tuples need to be moved, or you don't have enough space for a rewrite. 5. Remove VACUUM FULL (in it's current form) completely. Some other ideas also came out of the thread, like: * Provide a way to truncate the dead space from the end of a relation in a blocking manner. Right now, lazy vacuum won't shrink the file unless it can acquire an exclusive lock without waiting, and there's no way to actually make it wait. This can be a separate command, not necessarily a part of VACUUM. * Josh Berkus suggested allowing the user to specify a different tablespace in which to rebuild the tablespace. I'll begin looking at the patches themselves now, which implement #1 and #2. If we can implement enough of these features (say, #3 also) to remove the current form of VACUUM FULL, then we can just call the new feature VACUUM FULL, and save ourselves from syntactical headaches. Regards,Jeff Davis
pgsql-hackers by date: