Re: COMMIT NOWAIT Performance Option

From: Heikki Linnakangas <heikki(at)enterprisedb(dot)com>
To: "Jonah H(dot) Harris" <jonah(dot)harris(at)gmail(dot)com>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, Gregory Stark <stark(at)enterprisedb(dot)com>, Josh Berkus <josh(at)agliodbs(dot)com>, Jeff Davis <pgsql(at)j-davis(dot)com>, pgsql-hackers(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
Subject: Re: COMMIT NOWAIT Performance Option
Date: 2007-02-28 20:08:00
Message-ID: 45E5E120.3010300@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Jonah H. Harris wrote:
> On 2/28/07, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>> > But if the system was shut down uncleanly as the result of a
>> Postgres crash or
>> > fast shutdown of Postgres then that isn't an issue. And many users
>> may prefer
>> > to bring the system up as soon as possible as long as they know any
>> corrupt
>> > pages will be spotted and throw errors as soon as it's seen.
>>
>> I don't think we should start up a system and only detect the errors
>> later.
>
> Which is, of course, how everyone else does it. On block access, the
> checksum is verified (if you've turned checksum checking on). I
> *really* doubt you want to pull in every page in the database at
> startup time to verify the checksum or sequence. Even pages from the
> last checkpoint would be a killer.

AFAICS pages from the last checkpoint would be sufficient, and not that
expensive given that we have to pull all the pages touched since last
checkpoint from disk to do the WAL replay anyway.

> All of the databases (Oracle, SQL Server, DB2) have a way to perform a
> database corruption check which does go out and verify all checksums.

I think that's to protect from random disk errors rather than just torn
pages. Which might be a useful thing but I think that level of
protection belongs to the filesystem or storage hardware.

What's the use case for the torn-page detection, anyway? If you don't
trust your OS/hardware to protect you from torn-pages, but you do care
about your data, surely you would use full_pages_writes = on. If you do
trust your OS/hardware, just turn it off. And if you don't care about
your data, what's the point?

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Joshua D. Drake 2007-02-28 20:10:24 Re: COMMIT NOWAIT Performance Option
Previous Message Jonah H. Harris 2007-02-28 19:54:16 Re: COMMIT NOWAIT Performance Option