WAL and the WAL writer process
When we make changes to the data, the changes are not written to the data files immediately, as mentioned before (probably many times). Changes are made to the blocks in the buffer and records of these changes are written to the WAL buffer (as soon as changes to data are made). The changes are flushed to the WAL segments when the changes are committed.
In the pg_xlog
directory, the WAL segments are each 16 MB in size:
[postgres@MyCentOS pg_xlog]$ pwd /pgdata/9.3/pg_xlog [postgres@MyCentOS pg_xlog]$ ls -alrt total 16396 drwx------. 2 postgres postgres 4096 Oct 13 13:23 archive_status drwx------. 3 postgres postgres 4096 Oct 13 13:23 . drwx------. 15 postgres postgres 4096 Nov 15 20:17 .. -rw-------. 1 postgres postgres 16777216 Nov 15 20:17 000000010000000000000001
We can find out the segment PostgreSQL is writing to now using the pg_current_xlog_location
function:
[postgres@MyCentOS pg_xlog]$ psql psql (9.3.0) Type "help" for help. postgres...