Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

リドゥ(リドゥ)とは | 意味や読み方など丁寧でわかりやすい用語解説

リドゥ(リドゥ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

リドゥ (リドゥ)

英語表記

redo (リドゥ)

用語解説

リドゥとは、データベース管理システム(DBMS)において、システム障害が発生した際に、すでにコミット(確定)されたトランザクションによる変更を、トランザクションログに基づいてデータベースに再適用することで、データの整合性と永続性を保証するための重要なリカバリ(復旧)機構の一つである。データベースシステムが備えるべきACID特性のうち、「Durability(永続性)」、つまり一度コミットされたデータはシステム障害が発生しても失われないという性質を確保するために不可欠な処理である。

データベースにおけるトランザクションとは、一連のデータベース操作を一つにまとめた論理的な単位を指し、そのすべてが成功して確定するか(コミット)、すべてが失敗して取り消されるか(ロールバック)のどちらかの結果となる。コミットされたトランザクションによるデータ変更は、本来、永続的にデータベースに反映されるべきものである。しかし、実際のデータベースの動作では、データ変更はまずシステムのメモリ上に一時的に保持され、その後、非同期的にディスク上の物理的なデータベースファイルに書き込まれるという過程をたどる。このメモリ上のデータがディスクに書き込まれるまでの間にタイムラグが存在する。

このタイムラグの間に、突然の電源喪失、OSのクラッシュ、ハードウェアの故障などのシステム障害が発生した場合、メモリ上に存在していたコミット済みのデータ変更は、ディスクに書き込まれる前に失われてしまう可能性がある。もし、この失われたコミット済みデータが復旧できなければ、データベースは本来あるべき一貫した状態を失い、トランザクションの永続性が損なわれてしまう。このようなデータ損失を防ぎ、データベースを障害発生直前の正しく一貫性のある状態に戻すために、リドゥ処理が必要となるのである。

リドゥ処理は、主に「トランザクションログ」(またはジャーナル、リドゥログ、ライトアヘッドロギング:WAL)と呼ばれる特別な記録ファイルを利用して行われる。データベースシステムは、すべてのデータ変更操作が実際に行われるよりも前に、その変更内容(例:どのテーブルのどの行が、どのように変更されたか)と、その変更を行ったトランザクションに関する情報、さらにトランザクションがコミットされたという事実を、このトランザクションログに記録する。この「変更を適用する前に必ずログに書き込む」という原則は、ライトアヘッドロギングと呼ばれ、リドゥの確実な実行を保証する基盤となる。

システム障害が発生し、データベースが再起動されると、リカバリプロセスが自動的に開始される。このリカバリプロセスの中で、データベースシステムはトランザクションログを詳細に分析する。ログを時系列に沿って読み進めることで、障害発生直前のどのトランザクションがコミットされており、どの変更がディスクに書き込まれる前に失われた可能性があるかを識別する。リドゥ処理のフェーズでは、この識別されたコミット済みだが未反映の変更操作を、トランザクションログに記録された情報(変更前の値と変更後の値、変更操作の種類など)に基づいて、再度データベースファイルに適用していく。これにより、障害によって一時的に失われたコミット済みデータが復元され、データベースはシステム障害発生直前の、永続性と一貫性が保たれた状態に戻される。

リドゥは、データベースのリカバリプロセスにおいて、「アンドゥ」(またはロールバック)という別の重要な処理と密接に連携して動作する。アンドゥは、システム障害時にまだコミットされていなかった(すなわち、処理が途中で中断された)トランザクションによる変更を、トランザクションログの情報に基づいて取り消し、データベースをそのトランザクションが開始される前の状態に戻す処理である。要するに、リドゥが「コミットされた変更を再適用する」のに対し、アンドゥは「未コミットの変更を取り消す」という、それぞれ異なるが補完的な役割を持つ。これらの二つのリカバリメカニズムが協調して機能することで、どのようなタイミングでシステム障害が発生しても、データベースは常にデータの一貫性と永続性を維持できる状態に復旧される。

さらに、多くのデータベースシステムでは、リカバリ処理にかかる時間を短縮し、システムの停止時間を最小限に抑えるために「チェックポイント」という処理を定期的に実行する。チェックポイント処理とは、ある特定の時点において、メモリ上に存在するすべての変更データをディスクに書き込み(フラッシュし)、その時点でのデータベースの状態をトランザクションログに記録する操作である。これにより、システム障害が発生した場合でも、リカバリ時にトランザクションログのすべてを最初から読み込む必要がなくなり、最後のチェックポイント以降のログだけを処理すればよいため、リドゥおよびアンドゥ処理の範囲が限定され、データベースの復旧時間が大幅に短縮される。

このように、リドゥはデータベースシステムが備えるべき信頼性と耐久性を保証する上で、その中核をなす機能である。システム障害は避けられない事象であるが、リドゥ機構がバックグラウンドで確実に動作することで、データベースはデータ損失を最小限に抑え、迅速かつ正確に元の状態に復旧することが可能となる。結果として、私たちが日常的に利用する様々な情報システムにおいて、データの正確性と永続性が信頼され、安定したサービス提供が実現されているのである。

関連コンテンツ