0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsでPostgresのWALの更新をディスクへ強制する

Last updated at Posted at 2019-04-27

事象

次の環境で停電発生。停電発生1分前程度からのDB更新データが残っていない事象が発生
・Postgres14.1
・Windows10
※OSクラッシュ時なども同様

原因

walバッファに溜め込まれたデータがディスクにフラッシュされていなかった

解決方法

wal_sync_methodが不適切な設定値になっていました。

pg_test_fsyncで診断します。
PostgreSQLの最も高速なwal_sync_methodを決定する。
診断結果ではopen_datasyncが最速でした。
※pg_test_fsyncはPostgres9.1で追加されています。

pg_test_fsync  -f test.txt
テスト1件あたり5秒
このプラットフォームではopen_datasyncとopen_syncについてO_DIRECTが
サポートされています。

8kBの書込みを1回行ってファイル同期方法を比較します:
(Linuxのデフォルトであるfdatasyncを除きwal_sync_methodの優先順)
        open_datasync                     11517.116 操作/秒      87 μ秒/操作
        fdatasync                                  利用不可
        fsync                               538.828 操作/秒    1856 μ秒/操作
        fsync_writethrough                  539.794 操作/秒    1853 μ秒/操作
        open_sync                                  利用不可

8kBの書込みを2回行ってファイル同期方法を比較します:
(Linuxのデフォルトであるfdatasyncを除きwal_sync_methodの優先順)
        open_datasync                      5950.502 操作/秒     168 μ秒/操作
        fdatasync                                  利用不可
        fsync                               316.530 操作/秒    3159 μ秒/操作
        fsync_writethrough                  315.669 操作/秒    3168 μ秒/操作
        open_sync                                  利用不可

open_sync を異なった書込みサイズで比較します:
(これはopen_syncの書込みサイズを変えながら、16kBの書込みのコストを比較する
よう指定されています。)
         1 * 16kB open_sync書込み                  利用不可
         2 *  8kB open_sync書込み                  利用不可
         4 *  4kB open_sync書込み                  利用不可
         8 *  2kB open_sync書込み                  利用不可
        16 *  1kB open_sync書込み                  利用不可

書き込みのないのファイルディスクリプタ上のfsyncが無視されないかをテストします:
(もし実行時間が同等であれば、fsync()は異なったファイルディスクリプタ上で
データをsyncできることになります。)
        write, fsync, close                 107.541 操作/秒    9299 μ秒/操作
        write, close, fsync                 114.217 操作/秒    8755 μ秒/操作

8kBの同期なし書込み:
        write                            217051.499 操作/秒       5 μ秒/操作
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?