WALプロトコルとは、データベースのトランザクション処理において、データの更新を行う前に、その変更内容を記録したログを先に書き出す仕組み(ログ先行書き込み)のことです。これにより、システム障害が発生した場合でも、ログを元に処理を再実行(ロールフォワード)したり、中断したりした状態に復旧(ロールバック)したりして、データの整合性を保つことができます。
WALプロトコルの主な特徴
- ログの先書き: 実際にデータファイルを更新する前に、トランザクションの内容(更新前ログ)を、ログファイルに書き出します。
- 整合性の確保: トランザクションの完了(コミット)前にシステム障害が起きても、ログがディスクに記録されているため、データベースの回復が可能です。
- リカバリ: 障害発生時、ログに記録された情報に基づいて、中断した処理を再実行したり(ロールフォワード)、元の状態に戻したりします(ロールバック)。
- パフォーマンスの向上: メモリ上でのデータ更新とログへの書き出しは高速に行われ、実際のデータファイルへの書き込みは、ある程度まとめて行われるため、パフォーマンスが向上します。
- 応用: データベースのトランザクション処理だけでなく、ファイルシステムにおけるジャーナリングなど、他のシステムでも同様の考え方で整合性が保証されています。
WALの例
- PostgreSQL: 「WAL」という名称で、耐久性と整合性を保証するコア機能として提供されています。
- Oracle Database: 同様の機能は「REDOログ」と呼ばれています。
- Walrus: 「WAL」は「Write-Ahead Logging」の略ですが、Suiをベースとした分散型ストレージプロトコル「Walrus」でも「WAL」が使われており、文脈によって意味が異なります。

コメント