序文: 前回の記事では、MySQL システムでよく使用されるログをいくつか説明しました。実は、トランザクション関連のログ、REDO ログ、UNDO ログがありますが、これらはまだ紹介されていません。他のログと比較すると、REDO ログと UNDO ログはより神秘的で観察が困難です。本稿では、主にこれら2種類のトランザクションログの機能と運用・保守方法について紹介します。 1. ログの再実行 トランザクションの 4 つの主要な特性の 1 つが永続性であることは誰もが知っています。具体的には、トランザクションが正常に送信される限り、データベースに加えられた変更は永続的に保存され、いかなる理由でも元の状態に戻すことはできません。では、MySQL はどのようにして一貫性を確保するのでしょうか?最も簡単な方法は、トランザクションがコミットされるたびに、トランザクションに関係するすべての変更されたデータ ページをディスクに更新することです。ただし、そうすると、主に次の 2 つの点で重大なパフォーマンス上の問題が発生します。
そのため、MySQL は、トランザクションによってデータ ページに加えられた変更のみを記録する redo ログを設計しました。これにより、パフォーマンスの問題を完全に解決できます (相対的に言えば、ファイルは小さくなり、シーケンシャル IO になります)。 REDO ログは、メモリ内のログ バッファ (REDO ログ バッファ) と、ディスク上のログ ファイル (REDO ログ ファイル) の 2 つの部分で構成されます。 MySQL は DML ステートメントを実行するたびに、まずレコードを REDO ログ バッファに書き込み、次に特定の時点で複数の操作レコードを REDO ログ ファイルに書き込みます。 デフォルトでは、REDO ログはディスク上で ib_logfile0 と ib_logfile1 という名前の 2 つの物理ファイルによって表されます。 REDO ログ関連のパラメータについて簡単に説明します。
REDO ログとそのバッファ サイズを変更するには、データベース インスタンスを再起動する必要があります。初期化中に評価を行うことをお勧めします。特にデータベース インスタンスが頻繁に更新される場合は、REDO ログ グループの数とサイズを適切に増やすことができます。ただし、REDO ログ サイズを大きくしすぎることはお勧めしません。 2. 元に戻すログ UNDO ログは主にデータの原子性を保証するために使用されます。トランザクションが発生する前のデータのバージョンを保存し、ロールバックに使用できます。たとえば、INSERT ステートメントには対応する DELETE の UNDO ログがあり、各 UPDATE ステートメントには反対の UPDATE の対応する UNDO ログがあるため、エラーが発生した場合に、データをトランザクション前の状態にロールバックできます。同時に、UNDO ログは MVCC (マルチバージョン同時実行制御) の実装の鍵でもあります。 MySQL 5.7 では、UNDO ログはデフォルトで共有テーブルスペース ibdata に保存されます。初期化中にパラメータを設定することで、別のファイルに変更することもできます。次に、UNDO ログに関連するパラメータをいくつか示します。
UNDO ログ関連のパラメータはほとんど変更されません。 MySQL 8.0 では、デフォルトで独立した表領域が有効になっているため、UNDO ログ表領域のサイズ設定がより柔軟になる可能性があります。 要約: この記事は主にREDOログとUNDOログの役割と関連するパラメータ設定について紹介します。この記事は急いで書いたものです。間違いがあれば、メッセージを残して指摘してください。これら 2 種類のログのより深い内容については、おそらく著者はまだ、より徹底的に書く能力が十分ではないのでしょう。さて、MySQL関連のログについての記事を2つ書きました。何か参考になれば幸いです。 以下もご興味があるかもしれません:
|
<<: Linux sar コマンドの使用方法とコード例の分析
>>: Vue+element はローカル検索機能付きのドロップダウン メニューを実装します
目次Express ミドルウェアとは何ですか? Expressミドルウェアを作成するための要件Exp...
目次使用インストールルーティングでどのように使用しますか?読み込み速度の比較最近、中間およびバックエ...
ソフトウェアのダウンロードソフトウェアのダウンロード リンク: https://pan.baidu....
React では、this.state を使用して状態を直接変更しても、コンポーネントは再レンダリン...
ローカル環境はWindows10+WSL2(Ubuntu)です。サーバーにDockerをインストール...
目次最初のステップ: 2 番目のステップは、request.js で関連する構成を行うことです。re...
インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...
MySQL のインデックスの種類一般的に、次の 4 つのカテゴリに分類できます。通常のインデックス:...
<br />インターネットは絶えず変化しており、BusinessWeek.com は専門...
目次1. 共有共通モジュール2. 共有マテリアルモジュール3. 共有確認ダイアログ1. 共有共通モジ...
Web ページの読み込み速度は、Web サイトの品質を評価するための重要な指標です。その理由は、ほと...
Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジスト...
結果:実装コード: <!DOCTYPE html><html class=&quo...
HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...
ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...