SQLiteのWALモード:耐久性とパフォーマンスのトレードオフ
2025-08-24
SQLiteのWAL(Write-Ahead Log)モードは、より高い書き込みスループットのために頻繁に使用されますが、デフォルトのジャーナルモードと比較してデータの耐久性が低下します。`synchronous`プラグマはfsyncが呼び出される頻度を制御し、デフォルトはNORMALです。NORMALモードでは、WALファイルは各チェックポイントの前に同期され、データベースファイルは各チェックポイントの後に同期されますが、ほとんどのトランザクションでは同期操作が行われません。耐久性が重要ではないアプリケーションでは、NORMALで十分です。停電時にも耐久性を保証するには、`synchronous=FULL`を使用すると、各トランザクションコミット後にWALファイルの同期が追加され、耐久性が向上しますが、書き込み速度が低下します。SurrealDBがベンチマークのパフォーマンスのために耐久性を犠牲にしているという懸念を受けて、この説明はSQLiteのアプローチを明確にします。
(avi.im)