Re: [HACKERS] Postgres Speed or lack thereof - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [HACKERS] Postgres Speed or lack thereof
Date
Msg-id 5621.916811840@sss.pgh.pa.us
Whole thread Raw
In response to Re: [HACKERS] Postgres Speed or lack thereof  (John Holland <jholland@isr.umd.edu>)
Responses Re: [HACKERS] Postgres Speed or lack thereof  (Bruce Momjian <maillist@candle.pha.pa.us>)
Re: [HACKERS] Postgres Speed or lack thereof  (Todd Graham Lewis <tlewis@mindspring.net>)
List pgsql-hackers
John Holland <jholland@isr.umd.edu> writes:
> can you explain the -F flag? when is it passed to what?

-F is a command-line flag passed to the backend at backend startup.
Since backends are normally started by the postmaster, what you
really do in practice is to start the postmaster with "-o -F".
For example my postmaster start script looks like

nohup postmaster -i -o "-F" >server.log 2>&1 </dev/null &

What the -F switch actually does is to disable calls to fsync(2),
thereby allowing modified file blocks to hang around in kernel
memory for a little while (up to 30 seconds in most Unixes)
rather than being force-written to disk as soon as each transaction
commits.  If the same block of the database file gets modified
again within that time window (very likely under a repeated-update
load), you just saved a disk write.  On the other hand, if your OS
crashes or your power goes out in those 30 sec, you just lost a
database update that you thought you had committed.

I'm not sure I believe the argument that omitting -F buys very much
safety, even if you do not trust your power company.  Murphy's law
says that a power flicker will happen in the middle of committing
a transaction, not during the 30-second-max window between when you
could've had the data flushed to disk if only you'd used fsync()
and when the swapper process will fsync it on its own.  And in that
case you have a corrupted database anyway.  So my theory is you use
a reliable OS, and get yourself a UPS if your power company isn't
reliable (lord knows mine ain't), and back up your database as often
as you can.  -F buys enough speed that it's worth the small extra risk.

There are competent experts with conflicting opinions, however ;-)

See doc/README.fsync for more about -F and the implications of
using it.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Vince Vielhaber
Date:
Subject: Re: [HACKERS] Time Zones
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] Postgres Speed or lack thereof