Thank you Tom & John.

In this case, there are no updates/deleted - only inserts. For now, I have
set per-table autovacuum rules in order to minimize the frequency of
vacuums but to ensure the statistics are updated frequently with analyze:

Table auto-vacuum VACUUM base threshold    500000000
Table auto-vacuum VACUUM scale factor    0.3
Table auto-vacuum ANALYZE base threshold    50000
Table auto-vacuum ANALYZE scale factor    0.02
Table auto-vacuum VACUUM cost delay    20
Table auto-vacuum VACUUM cost limit    200




On Wed, Nov 16, 2011 at 9:31 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> John R Pierce <pie...@hogranch.com> writes:
> > On 11/16/11 4:24 PM, Jason Buberel wrote:
> >> Just wondering if there is ever a reason to vacuum a very large table
> >> (> 1B rows) containing rows that never has rows deleted.
>
> > no updates either?
>
> To clarify: in Postgres, an "update" means an insert and a delete.
> So unless you mean that this table is insert-only, you certainly
> still need vacuum.
>
> > you still want to do a vacuum analyze every so often to update the
> > statistics used by the planner.
>
> If it's purely an insert-only table, such as a logging table, then in
> principle you only need periodic ANALYZEs and not any VACUUMs.
>
> VACUUM could still be worthwhile though, because (a) it will set commit
> hint bits on all pages and (b) it will set visibility-map bits on all
> pages.  An ANALYZE would only do those things for the random sample of
> pages that it visits.  While neither of those things are critical, they
> do offload work from future queries that would otherwise have to do that
> work in-line.  So if you've got a maintenance window where the database
> isn't answering queries anyway, it could be worthwhile to run a VACUUM
> just to get those bits set.
>
>                        regards, tom lane
>



-- 
Jason L. Buberel
CTO, Altos Research
http://www.altosresearch.com/
650.603.0907

Reply via email to