Re: Difference between fsync and open_sync

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: David G Johnston <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: pgsql-admin(at)postgresql(dot)org
Subject: Re: Difference between fsync and open_sync
Date: 2014-04-19 02:24:47
Message-ID: 20140419022447.GB16260@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On Thu, Apr 17, 2014 at 08:54:25PM -0700, David G Johnston wrote:
> > And i understood the difference between, for example, fsync and fdatasync,
> > and between open_datasync and open_sync, but i cannot understand the
> > difference between open_sync and fsync or between open_datasync and
> > fdatasync , As far as i could understand, the open_* methods call the
> > open() method of linux, and f*sync methods calls the fsync() method of
> > linux?
> >
> > My doubt is about what's the difference between them, or a link where this
> > is explained. In the previous link it talks about the 4 methods but i
> > cannot distinguish the difference between them.
>
> fsync and open are both system functions for which documentation exists on
> the Internet.
>
> Short answer seems to be that the physical write is guaranteed: open =
> immediately; fsync = at commit
>
> As long as "fsync mode" is on after a commit command returns the WAL is
> promised to be physically written to disk; the means and speed of doing so
> vary according to the method chosen (limited by platform), the workload, the
> hardware, and the OS.
>
> Others will correct any misunderstandings I may have acquired in my quick
> reading and reasoning.

The open* sync methods use a flag when the file is open that cause
_every_ write to be flushed to disk automatically. The non-open* types
allow multiple writes and require a specific sync* command to be issued
when needed.

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

+ Everyone has their own god. +

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Elías David 2014-04-19 07:19:14 Default order of select datname from pg_database
Previous Message Bui, Michelle P 2014-04-18 14:51:05 Re: shared_preload_libraries = $libdir/plugins/plugin_debugger.dll causes server not started