Re: Freeze avoidance of very large table.

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Sawada Masahiko <sawada(dot)mshk(at)gmail(dot)com>, Greg Stark <stark(at)mit(dot)edu>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Jeff Janes <jeff(dot)janes(at)gmail(dot)com>
Subject: Re: Freeze avoidance of very large table.
Date: 2015-04-23 15:45:32
Message-ID: 20150423154532.GB31856@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Apr 23, 2015 at 09:45:38AM -0400, Robert Haas wrote:
> > Right. My point is that either you do X 2M times to maintain that fork
> > and the overhead of the file existence, or you do one VACUUM FREEZE. I
> > am saying that 2M is a large number and adding all those X's might
> > exceed the cost of a VACUUM FREEZE.
>
> I agree, but if we instead make this part of the visibility map
> instead of a separate fork, the cost is much less. It won't be any
> more expensive to clear 2 consecutive bits any time a page is touched
> than it is to clear 1. The VM fork will be twice as large, but still
> tiny. And the fact that you'll have only half as many pages mapping
> to the same VM page may even improve performance in some cases by
> reducing contention. Even when it reduces performance, I think the
> impact will be so tiny as not to be worth caring about.

Agreed, no extra file, and the same write volume as currently. It would
also match pg_clog, which uses two bits per transaction --- maybe we can
reuse some of that code.

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ Everyone has their own god. +

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Heikki Linnakangas 2015-04-23 15:48:57 Re: Freeze avoidance of very large table.
Previous Message Bruce Momjian 2015-04-23 15:41:25 Re: Freeze avoidance of very large table.