Search Postgresql Archives

Re: Autovacuum Improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Russell Smith wrote:
Alvaro Herrera wrote:
I intend to work on the maintenance window idea for 8.3.  I'm not sure
if I'll be able to introduce the worker process stuff in there as well.
I actually haven't done much design on the stuff so I can't say.

What does a maintenance window mean? I am slightly fearful that it as other improvements to vacuum are made, it will change it's meaning.

The maintenance window design as I understand it (Alvaro chime in if I get this wrong) is that we will be able to specify blocks of time that are assigned specific autovacuum settings. For example we might define a maintenance window of Sunday morning from 1AM - 8AM, during that time all autvacuum thresholds will be dropped to .01, that way everything will get vacuumed that needs it during that window. Outside of the window default autovacuum settings apply.
There has been discussion about a bitmap of dirty pages in a relation for vacuum to clean. Do that effect what maintenance means? eg. Does maintenance mean I can only scan the whole relation for XID wrap in maintenance mode and not during non-maintenance time. Does it mean we don't vacuum at all in non-maintenance mode. Or do we just have a different set of thresholds during maintenance.

Different thresholds during maintenance window.

Further to this was a patch a long time ago for partial vacuum, which only vacuumed part of the relation. It was rejected on grounds of not helping as the index cleanup is the expensive part. My view on this is, if with a very large table you should be able to vacuum until you fill your maintenance work mem. You are then forced to process indexes. Then that is a good time to stop vacuuming. You would have to start the process again effectively. This may also change the meaning of maintenance window. Again, only full relation scans in maintenance times, possibly something else entirely.

I'm not sure how partial vacuums will effect autovacuum, but I'm not going to worry about it until it gets accepted which I don't think is going to happen anytime soon. BTW, when a vacuum starts during a maintenance window but doesn't finish before the window closes, I think it should continue running, however I believe the default vacuum delay setting will apply which could be setup to help reduce the impact that vacuum has outside the maintenance window.

I am unsure of what the long term goal of the maintenance window is. I understand it's to produce a time when vacuum is able to be more aggressive on the system. But I do not know what that means in light of other improvements such as those listed above. Coming up with a method for maintenance window that just used a separate set of thresholds is one option. However is that the best thing to do. Some clarity here from others would probably help. But I also think we need to consider the big picture of where vacuum is going before inventing a mechanism that may not mean anything come 8.4

I think for now all we are talking about are different thresholds. As newer vacuuming options become available we should consider how they apply, but we aren't there yet.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux