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」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る