Re: [PERFORM] DELETE vs TRUNCATE explanation

From: Craig Ringer <ringerc(at)ringerc(dot)id(dot)au>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Daniel Farina <daniel(at)heroku(dot)com>, "Harold A(dot) Giménez" <harold(dot)gimenez(at)gmail(dot)com>
Subject: Re: [PERFORM] DELETE vs TRUNCATE explanation
Date: 2012-07-16 01:43:02
Message-ID: 500371A6.5010906@ringerc.id.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-performance

On 07/16/2012 09:37 AM, Tom Lane wrote:
>> There's one way that doesn't have any housekeeping cost to Pg. It's
>> pretty bad manners if there's anybody other than Pg on the system though:
>> sync()
> Yeah, I thought about that: if we could document that issuing a manual
> sync after turning fsync on leaves you in a guaranteed-good state once
> the sync is complete, it'd probably be fine. However, I'm not convinced
> that we could promise that with a straight face. In the first place,
> PG has only very weak guarantees about how quickly all processes in the
> system will absorb a GUC update. In the second place, I'm not entirely
> sure that there aren't race conditions around checkpoints and the fsync
> request queue (particularly if we do what Jeff is suggesting and
> suppress queuing requests at the upstream end). It might be all right,
> or it might be all right after expending some work, but the whole thing
> is not an area where I think anyone wants to spend time. I think it'd
> be much safer to document that the correct procedure is "stop the
> database, do a manual sync, enable fsync in postgresql.conf, restart the
> database". And if that's what we're documenting, we lose little or
> nothing by marking fsync as PGC_POSTMASTER.
Sounds reasonable to me; I tend to view fsync=off as a testing feature
anyway. Will clone onto -general and see if anyone yells.

--
Craig Ringer

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Craig Ringer 2012-07-16 01:54:44 Proposed change for 9.3(?): Require full restart to change fsync parameter, not just pg_ctl reload
Previous Message Tom Lane 2012-07-16 01:37:41 Re: [PERFORM] DELETE vs TRUNCATE explanation

Browse pgsql-performance by date

  From Date Subject
Next Message Craig Ringer 2012-07-16 01:54:44 Proposed change for 9.3(?): Require full restart to change fsync parameter, not just pg_ctl reload
Previous Message Tom Lane 2012-07-16 01:37:41 Re: [PERFORM] DELETE vs TRUNCATE explanation