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

トランザクションログ(トランザクションログ)とは | 意味や読み方など丁寧でわかりやすい用語解説

トランザクションログ(トランザクションログ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

トランザクションログ (トランザクションログ)

英語表記

transaction log (トランザクションログ)

用語解説

トランザクションログは、データベースシステムにおいてデータの整合性と信頼性を保つために極めて重要な役割を担う記録である。これは、データベースに対するあらゆる変更操作の詳細を時系列に沿って記録するファイル群を指す。システム障害が発生した場合でも、トランザクションログに記録された情報に基づいてデータベースを整合性のとれた状態に復旧させることが可能となる。

具体的に、トランザクションログは、データベースに対する一連の操作を、すべて実行するか、またはすべて実行しないかのいずれかの状態に保つ「トランザクション」と呼ばれる不可分な処理単位の実行状況を管理する。トランザクションが正常に完了し「コミット」された場合、その変更は永続的にデータベースに反映される。一方、トランザクションの途中でエラーが発生したり、ユーザーによってキャンセルされたりした場合、「ロールバック」が行われ、トランザクション開始前の状態にデータベースが戻される。このコミットとロールバックのメカニズムを支え、データの永続性(Durability)と原子性(Atomicity)というデータベースのACID特性を保証する根幹となるのがトランザクションログである。

トランザクションログの詳細な機能と役割について述べる。トランザクションログには、データの更新前イメージ(Undo情報)と更新後イメージ(Redo情報)、操作の種類、トランザクションを一意に識別するID、更新日時、および変更されたデータの物理的な位置などの情報が記録される。これらの情報は、データベースがクラッシュした際の復旧処理において不可欠である。

データベースシステムは、通常「ライトアヘッドロギング(WAL: Write-Ahead Logging)」という原則に従って動作する。これは、データベースのデータブロックがディスクに書き込まれる前に、その変更内容に関するトランザクションログのエントリが必ずディスクに書き込まれることを意味する。もしデータブロックがディスクに書き込まれる前にシステムがクラッシュした場合でも、ディスク上のトランザクションログにコミット済みの変更が記録されていれば、データベースが再起動した際にそのログを読み込み、未反映の変更を再適用してデータを復旧させることができる。この処理を「ロールフォワード(Redo)」と呼ぶ。逆に、クラッシュ時に未コミットの状態であったトランザクションについては、ログに記録されたUndo情報を使って、そのトランザクションが行った変更をすべて取り消し、トランザクション開始前の状態に戻す。この処理が「ロールバック(Undo)」である。

トランザクションログは、その性質上、データベースに対する変更が発生するたびに記録が増え続けるため、無限に増大する可能性がある。これを効率的に管理し、復旧にかかる時間を短縮するために「チェックポイント」処理が定期的に実行される。チェックポイントとは、特定の時点におけるデータベース内のすべての変更がデータファイルに確実に書き込まれている状態を記録し、その時点より前のトランザクションログが復旧目的で不要になったことを示す仕組みである。チェックポイントが作成されると、それ以前のコミット済みトランザクションに関するログは「切り捨て(Truncation)」が可能となり、ログファイルのサイズを管理できる。

また、トランザクションログはデータベースのバックアップとリカバリ戦略においても中心的な役割を果たす。データベース全体のフルバックアップと、それ以降のトランザクションログのバックアップを組み合わせて取得することで、データベースを過去の任意の時点に復旧させる「ポイントインタイムリカバリ」が可能となる。これは、特定の操作ミスやデータの論理的な破損が発生した場合でも、問題発生直前の状態までデータベースを正確に戻せることを意味する。

トランザクションログの管理はデータベース運用において非常に重要である。ログファイルが満杯になると、データベースはそれ以上の更新操作を受け付けられなくなり、システム全体の停止につながる可能性がある。そのため、ログファイルのサイズ監視、定期的なバックアップと切り捨て、およびログファイルの適切な配置と冗長化といった運用管理が不可欠となる。トランザクションログは、単なる記録ファイルではなく、データベースシステムの信頼性と可用性を支える基盤技術なのである。

関連コンテンツ