Hi,

First, I'm not sure this mail should go to this mailing list. As it
refers to source code (mainly src/backend/postmaster/bgwriter.c and
src/backend/access/transam/xlog.c), I sent it here. I apologize if I'm
wrong.

I'm a bit puzzled by the different informations I can read on the
documentation, on the source files and other README files from the
source package. I'm actually using 8.2.5 source files.

I try to answer a simple question : what happens when I do a simple
"INSERT" on a just started PostgreSQL server.

# pg_ctl start
# psql foobase
[...]
foobase=# CREATE TABLE footable (i int4);
CREATE TABLE
foobase=# INSERT INTO footable (i) VALUES (1);
INSERT 0 1

>From what I understand with the INSERT statement, here is what happens :
 * backend loads first (and only) block from footable file into a shared
   buffer
 * it modifies this block on the shared buffer, and sets it as dirty

After checkpoint_timeout seconds or after a manual CHECKPOINT (there's
also some other ways to have a checkpoint but in my simple example,
these two seem to be the most probable ones) :
 * bgwriter runs CreateCheckPoint
 * it will, beyond other things, flush this block from shared buffer to
   disk, fsync, sets the block as non-dirty...

... and here is my first question : flushes to the current XLOG file or
to footable data file ? I think it is to XLOG file but I don't find
where in the code the content of WAL files is flushed to data files. If
you know where I can look to get this information, I'm really interested.

>From other parts of the documentation, it seems checkpoints are also in
charge of flushing WAL files to data files. I've read something like
this: "a checkpoint writes dirty shared buffers, sync dirty  kernel
buffers, recycle WAL files." Also, because of the checkpoint_segments GUC.

And I don't find where wal_buffers are used in all this process.

One last thing (wrt this mail), I think I understand what
full_page_writes does but I wonder what this sentence means : "Writes
full pages to WAL when first modified after a checkpoint." ? (it's the
last part that I don't understand)

Thanks for any pointers.

Regards.


-- 
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to