- commit_delay adds a time delay, set in
+ commit_delay adds a time delay, measured in
microseconds, before a WAL flush is initiated. This can improve
group commit throughput by allowing a larger number of transactions
to commit via a single WAL flush, if system load is high enough
flush. Because the delay is just wasted if no other transactions
become ready to commit, a delay is only performed if at least
commit_siblings other transactions are active
- immediately before a flush would otherwise have been initiated.
+ when a flush is about to be initiated. Also, no delays are
+ performed if fsync is disabled.
+ The default commit_delay> is zero (no delay).
+ Only superusers can change this setting.
+
In
PostgreSQL> releases prior to 9.3,
commit_delay behaved differently and was much
less effective: it affected only commits, rather than all WAL flushes,
was completed sooner. Beginning in
PostgreSQL> 9.3,
the first process that becomes ready to flush waits for the configured
interval, while subsequent processes wait only until the leader
- completes the flush. The default commit_delay> is zero
- (no delay). No delays are performed unless fsync
- is enabled.
+ completes the flush operation.