WAL の使い方
すべての変更の記録
書き方
SELECT pg_current_wal_lsn(); SELECT pg_walfile_name(pg_current_wal_lsn()); SELECT pg_wal_lsn_diff(LSN, LSN); SELECT pg_switch_wal(); SELECT name, size FROM pg_ls_waldir();
PostgreSQL は、データを書き換える前に、変更を WAL(write-ahead log)に書きます。WAL の位置は LSN(0/3000148 のような形)で表し、16MB ごとのファイル(000000010000000000000003)に分かれて $PGDATA/pg_wal にたまります。pg_wal_lsn_diff は 2 つの位置の差(バイト)、pg_switch_wal は今のファイルを閉じて次のファイルへ進めます。
例
SELECT pg_current_wal_lsn(), pg_walfile_name(pg_current_wal_lsn()); \! ls pg_wal
実際に打って練習する
PostgreSQL DBA コースの Lv36「変更の記録 WAL」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。