开始
我目前的理解是:
如果我执行了一条SQL文,那么
先是相关数据写到 wal buffer里,
然后再写到 data buffer(shared_buffer)里。
这之后,
由于wal writer process 的存在,就开始定期地读取 wal buffer的内容,然后写到 wal log中。
又由于 writer process 的存在在,开始定期地读取 data buffer 的内容,然后直接写到数据文件中。
而由于checkpoint_timeout 与 checkpoint_segments 的存在,checkpointer process会在合适的时候,
把 data buffer 中的内容,写到wal log中。
关于wal writer process,下面日文网站有所说明:
http://lets.postgresql.jp/documents/technical/sourcetree/
WAL ライタープロセス
WAL ライタープロセス (WAL writer process) は、共有メモリ上の WAL バッファを最適なタイミングでハードディスクに書出します。 これによって、バックエンドプロセスが自ら WAL バッファの書き出しを行なう負担を軽減し、パフォーマンスを向上させます。
结束