Re: visibilitymap_count() at the end of vacuum

From: Pavan Deolasee <pavan(dot)deolasee(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Andres Freund <andres(at)2ndquadrant(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: visibilitymap_count() at the end of vacuum
Date: 2012-12-03 23:44:20
Message-ID: CABOikdNQYvuaKv1F9Op5tV5N89tX=VJqvP3i-NDy3ENcwMB-dw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Dec 4, 2012 at 3:16 AM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:

>
> Also, if someone does have a 100GB relation, rereading 2MB of
> visibility map pages at the end probably isn't a significant part of
> the total cost. Even if 99.9% of the relation is all-visible and we
> skip reading those parts, the visibility map reads will still be only
> about 2% of the total read activity, and most of the time you won't be
> that lucky.
>
>
Hmm. I fully agree its a very small percentage of the total cost. But I
still don't see why it should not be optimised, if possible. Of course, if
not recounting at the end will generate bad query plans most of the time
for most of the workloads or even a few workloads, then the minuscule cost
will pay of. But nobody convincingly argued about that.

Even if the current way is the right way, we should probably just add a
comment there. I also noticed that we call vacuum_delay_point() after
testing every visibility map bit in lazy_scan_heap() which looks overkill,
but visibilitymap_count() runs to the end without even a single call to
vacuum_delay_point(). Is that intended ? Or should we at least check for
interrupts there ?

Thanks,
Pavan

--
Pavan Deolasee
http://www.linkedin.com/in/pavandeolasee

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2012-12-04 00:17:36 Re: [COMMITTERS] pgsql: Add mode where contrib installcheck runs each module in a separa
Previous Message Jan Wieck 2012-12-03 23:08:22 Re: autovacuum truncate exclusive lock round two