On Mon, Feb 26, 2007 at 06:23:22PM -0500, Matthew T. O'Connor wrote: > Alvaro Herrera wrote: > >Matthew T. O'Connor wrote: > >>How can you determine what tables can be vacuumed within > >>autovacuum_naptime? > > > >My assumption is that > >pg_class.relpages * vacuum_cost_page_miss * vacuum_cost_delay = time to > >vacuum > > > >This is of course not the reality, because the delay is not how long > >it takes to fetch the pages. But it lets us have a value with which we > >can do something. With the default values, vacuum_cost_delay=10, > >vacuum_cost_page_miss=10, autovacuum_naptime=60s, we'll consider tables > >of under 600 pages, 4800 kB (should we include indexes here in the > >relpages count? My guess is no). > > I'm not sure how pg_class.relpages is maintained but what happens to a > bloated table? For example, a 100 row table that is constantly updated > and hasn't been vacuumed in a while (say the admin disabled autovacuum > for a while), now that small 100 row table has 1000 pages in it most of > which are just bloat, will we miss this table? Perhaps basing this on > reltuples would be better?
The entire point of this is to ensure that the second daemon will only vacuum tables that it can finish very quickly. If you let a table bloat so it's too big, then you just can't vacuum it very frequently without risking all your other hot tables bloating because they're no longer getting vacuumed. The reality is that you can actually vacuum a pretty good-sized table in 60 seconds with typical cost-delay settings (ie: defaults except cost_delay set to 10). That means you can do 9 pages ~100 times a second, or 54k pages a minute. Even with a vacuum_cost_delay of 20, that's still 27k pages per minute. -- Jim Nasby [EMAIL PROTECTED] EnterpriseDB http://enterprisedb.com 512.569.9461 (cell) ---------------------------(end of broadcast)--------------------------- TIP 7: You can help support the PostgreSQL project by donating at http://www.postgresql.org/about/donate