> The checkpointer process is responsible for creating safe points > from which a recovery can begin; the background writer tries to > keep some pages available for re-use so that processes running > queries don't need to wait for page writes in order to have free > spots to use in shared buffers.
Thank you. Do both of them write to the same files?
Yes, mostly. (The checkpointer also does some other housekeeping writes beyond the ordinary data file ones)
Is it that checkpoint writes only committed data whereas background writer may also write non-committed data if there is no space available in the buffers?
No. The checkpointer writes all data that was dirty as of a certain time (the start of the checkpoint) regardless of how often it was used since dirtied, and the background writer writes data that hasn't been used recently, regardless of when it was first dirtied. Neither knows or cares whether the data being written was committed, rolled back, or still in progress.