MySQL の 3 種類のログ: Binlog、Redo Log、Undo Log の違い

3つの違い

Binlog、Redo Log、Undo Log はデータベース システムの重要なログ コンポーネントであり、それぞれさまざまな問題を解決するために使用されます。

  1. Binlog (バイナリログ):
    • 違い: Binlog は MySQL データベース内のログで、INSERT、UPDATE、DELETE ステートメントなどのデータベースの論理変更操作を記録するために使用されます。これはバイナリ形式で記録され、データの回復、データベースの複製、およびデータの同期に使用されます。
    • 解決された問題: Binlog は主にデータの回復とデータベースのレプリケーションに使用されます。論理操作を記録することで、障害発生時に失われたデータを回復でき、マスタ・スレーブ・レプリケーションでのデータ同期をサポートします。
  2. REDO ログ (やり直しログ):
    • 違い: REDO ログはデータベース エンジンのログであり、データ ページの変更など、データベースの物理的な変更操作を記録するために使用されます。順次ログが記録され、通常はディスク上のログ ファイルに追加されます。
    • 解決された問題: REDO ログは主に、データベース トランザクションの永続性とクラッシュからの回復を保証するために使用されます。物理的な操作をREDOログに記録することで、データベースがクラッシュした場合でも、REDOログの再生によりコミットされたトランザクションを復元でき、データの整合性を確保できます。
  3. 元に戻すログ:
    • 違い: アンドゥ ログはデータベース エンジンのログであり、トランザクションのロールバック情報を記録するために使用されます。つまり、コミットされたトランザクションによって行われた変更操作を元に戻すために使用されます。トランザクションのロールバック操作をサポートするために、トランザクション実行中に古い値のバックアップを記録します。
    • 解決された問題: Undo Log は主にトランザクションのロールバックと同時実行制御に使用されます。トランザクションをロールバックする必要がある場合、元に戻すログに保存されている古い値を使用して、データをトランザクション開始前の状態に復元できます。さらに、Undo Log はマルチバージョン同時実行制御 (MVCC) でも使用され、トランザクションの分離と同時アクセスの一貫性を提供します。

要約:

  • Binlog は、データ回復とデータベース複製のための論理変更操作を記録します。
  • REDO ログには物理的な変更操作が記録され、トランザクションの永続性とクラッシュからの回復が保証されます。
  • アンドゥ ログには、トランザクション ロールバックと同時実行制御のためのトランザクション ロールバック情報が記録されます。

サイズと収納力

Binlog、Redo Log、Undo Log には、サイズと保存方法に次のような違いがあります。

  1. サイズ:
    • ビンログのサイズ: ビンログのサイズは、データベース操作の種類と頻度によって異なります。データベースの論理変更操作を記録するため、そのサイズは実行された SQL ステートメントの数とデータ変更の量に関係します。
    • REDO ログのサイズ: REDO ログのサイズは、トランザクションの数とサイズ、およびデータベース書き込み操作の頻度によって異なります。データベースの物理的な変更操作が記録されるため、そのサイズはトランザクションのコミット頻度とデータ変更の量に関係します。
    • Undo ログのサイズ: Undo ログのサイズは、データベース内のアクティブなトランザクションの数と各トランザクションのサイズによって異なります。トランザクションのロールバック情報が記録されるため、そのサイズはトランザクションの数と変更されたデータの量に関係します。
  2. 保管方法:
    • バイナリ ログの保存方法: バイナリ ファイルの形式でファイル システムに保存され、保存場所と保存期間を構成できます。データはデータベース サーバーにローカルに保存したり、複製やデータ同期のためにネットワーク経由で他のサーバーに送信したりできます。
    • REDO ログの保存方法: 通常、REDO ログは循環書き込み方式で専用のディスク領域に保存されます。これは、REDO ログ ファイル グループと呼ばれます。データベース エンジンは、永続性とクラッシュ リカバリを確保するために、REDO ログを REDO ログ ファイルに追加します。
    • Undo ログの保存方法: Undo ログは通常、データ ページまたはロールバック セグメントの形式でデータベースのデータ ファイルに保存されます。データベース エンジンは、トランザクションごとに Undo Log 領域を割り当てて、トランザクションのロールバック情報を記録し、古いバージョンのデータをロールバックまたは読み取る必要があるときに使用します。

具体的なサイズと保存方法はデータベース エンジンによって異なる場合があることに注意してください。上記は一般的な特性と動作ですが、具体的な実装はデータベース システムや構成によって異なる場合があります。

トリガータイミング

データベース操作時のBinlog、Redo Log、Undo Logのトリガータイミングは以下のとおりです。

  1. ビンログトリガーのタイミング:
    • トランザクションがコミットされると、Binlog はトランザクションの論理変更操作を記録します。トランザクション コミットはステートメントによって明示的にトリガーできますCOMMIT。また、自動コミット モードでは、個々の SQL ステートメントが実行後にトランザクション コミットをトリガーします。
  2. REDO ログのトリガータイミング:
    • トランザクションの実行中、REDO ログはトランザクションによってデータベースに加えられた物理的な変更を記録します。これらの変更操作は、REDO ログ バッファに書き込まれます。
    • トランザクションがコミットされる前、またはトランザクションがクラッシュすると、REDO ログ バッファ内のログがディスク上の REDO ログ ファイルにフラッシュされます。
  3. アンドゥログのトリガータイミング:
    • トランザクションの実行中、アンドゥ ログは、トランザクションによってデータベース上で実行された変更操作のアンドゥ情報を記録します。これは、トランザクションのロールバックと同時実行制御 (マルチバージョン同時実行制御など) を実装するために使用されます。
    • トランザクションの実行中にデータが変更されると、対応するアンドゥ ログ レコードがアンドゥ ログ バッファに書き込まれるか、アンドゥ ログ ファイルに直接書き込まれます。

具体的なトリガーのタイミングはデータベース エンジンと構成によって異なる場合があることに注意してください。ただし、通常、これらのログ コンポーネントは、トランザクションの実行中にさまざまな目的や要件に従ってトリガーされ、記録されます。

おすすめ

転載: blog.csdn.net/a772304419/article/details/132457623