The overhead of waiting for
physical disk commits was stressed as a likely bottleneck for committing
transactions. If you don't have a battery-backed write cache to
accelerate that, but you need better commit speed, what can you do? The
standard approach is to disable synchronous_commit, which is
sometimes alternately referred to as enabling asynchronous commits. This
groups commits into chunks at a frequency determined by the related wal_writer_delay
parameter. The default settings guarantee a real commit to disk at most
600 milliseconds after the client commit. During that window, which you
can reduce in size with a corresponding decrease in speed-up, that data
will not be recovered afterwards if your server crashes.
Note that it's possible to turn this parameter off for a single
client during its session rather than making it a server-wide choice:
This provides you with the option of having different physical commit guarantees for different types of data you put into the database. A routine activity monitoring table, one that was frequently inserted into and where a fraction of a second of loss is acceptable, would be a good candidate for asynchronous commit. An infrequently written table holding real-world monetary transactions should prefer the standard synchronous commit.