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@xxxxxxxxxx> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. + -- Sent via pgsql-admin mailing list (pgsql-admin@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-admin