On Fri, 2003-10-17 at 10:22, Tom Lane wrote:
Shridhar Daithankar <[EMAIL PROTECTED]> writes:
What part of plain vacuum takes disk bandwidth?
Reading (and possibly rewriting) all the pages.
Would it be possible for the backend to keep a list of the first N (N being a large number but not significant in memory usage) pages it has deleted tuples out of and a second list of N pages it has inserted tuples into.
That is RSM, reclaimable space map. It is on TODO.
After the transaction has completed and there is an idle period (say 1/4 second between transaction) it can pass the insert information on a rollback and delete information on a commit to a separate backend.
This 'vacuum' backend could then prioritize garbage collection for the pages it knows have been changed performing a single page vacuum when a specific page has seen a high level of reported activity.
If this daemon could also get a hold of information about idleness of IO in general the decision about what to vacuum and when may be better (heavily hit pages during peak periods, all reports pages on medium load). When completely idle, run through the entire system to get back as much as possible.
I agree. This seems to be the best way of dealing with things. Of course, probably there are details we are missing here, but in general its good.
Shridhar
---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend