-
+
Server Configuration
Background Writer
-
Beginning in PostgreSQL> 8.0, there is a separate server
+ There is a separate server
process called the background writer>, whose function
is to issue writes of dirty> shared buffers. The intent is
that server processes handling user queries should seldom or never have
to wait for a write to occur, because the background writer will do it.
However there is a net overall
- increase in I/O load, because where a repeatedly-dirtied page might
- before have been written only once per checkpoint interval, the
+ increase in I/O load, because a repeatedly-dirtied page might
+ otherwise be written only once per checkpoint interval, but the
background writer might write it several times in the same interval.
- In most situations a continuous low load is preferable to periodic
- spikes, but the parameters discussed in this subsection can be used to
+ The parameters discussed in this subsection can be used to
tune the behavior for local needs.
- Unless limited by bgwriter_lru_maxpages>, the number
- of dirty buffers written in each round is determined by reference
- to the number of new buffers that have been needed by server
- processes during recent rounds. This number is multiplied by
- bgwriter_lru_multiplier> to arrive at the estimate
- of the number of buffers that will be needed during the next round.
+ The number of dirty buffers written in each round is based on the
+ number of new buffers that have been needed by server processes
+ during recent rounds. The average recent need is multiplied by
+ bgwriter_lru_multiplier> to arrive at an estimate of the
+ number of buffers that will be needed during the next round. Dirty
+ buffers are written until there are that many clean, reusable buffers
+ available. (However, no more than bgwriter_lru_maxpages>
+ buffers will be written per round.)
Thus, a setting of 1.0 represents a just in time> policy
of writing exactly the number of buffers predicted to be needed.
Larger values provide some cushion against spikes in demand,