MySQLのFreeListメカニズムの詳細な説明

MySQLのFreeListメカニズムの詳細な説明

1. はじめに

MySQL が起動すると、BufferPool が初期化されます。クエリ操作を実行する前は、BufferPool のキャッシュ ページは空のメモリ ブロックであり、使用されておらず、データも保存されていません。

また、それが指すキャッシュ ページは、キャッシュ ページの説明情報を通じて直接かつ一意に見つけることができることもわかっています。

ディスクから読み取ったデータ ページをどのバッファー ページに配置する必要があるか考えたことがありますか?

この問題により、フリー リストが表示されます。

2. フリーリスト

実際、フリー リストは、キャッシュ ページの説明情報に基づいてバッファー プールに編成された双方向リンク リストです。つまり、フリーリスト内の各ノードは、キャッシュページに対応する記述情報です。指定されたキャッシュページ(キャッシュページ)は説明情報を通じて見つけることができます

InnoDB が Free List を設計した本来の目的は、上記の問題を解決することです。

このキャッシュ ページにデータが格納されていない場合、対応する説明情報はフリー リストに保持されます。このとき、ディスクから読み取ったデータ ページをキャッシュ ページに配置する場合は、まずフリー リストからノードを見つけ (フリー リスト内のすべてのノードは、一度も使用されたことのないキャッシュ ページを指します)、その後、読み取ったデータ ページをそのノードが指すキャッシュ ページに配置する必要があります。

対応: データがデータ ページに配置された後。対応する説明情報ブロックはフリーリストから削除されます。

3. データ ページがキャッシュ内にあるかどうかを確認するにはどうすればよいでしょうか?

MySQL は、読み取ったデータ ページがキャッシュ ページ内にあるかどうかをどのようにして認識するのか疑問に思ったことはありませんか?

この関数の実装は、別のデータ構造、ハッシュテーブルに依存します。

キー = テーブルスペース番号 + データページ番号

値 = キャッシュページアドレス

ハッシュ テーブルに存在する場合、データ ページがバッファー プールにすでに存在するため、バッファー プール内のキャッシュ ページが最初に使用されます。バッファ プール内のキャッシュ ページが最初に使用される理由は、間違いなく推測できると思います。まず、ランダム ディスク IO が回避されます。次に、キャッシュ ページ内のデータは変更されたダーティ データである可能性があります。

以上がMySQLのFreeListメカニズムの詳細な説明です。MySQLのFreeListメカニズムの詳細については、123WORDPRESS.COMの他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • Windows での MySQL 5.6 のインストールと設定 (スクリーンショットと詳細な手順付き)
  • Mysql 文字列インターセプション関数 SUBSTRING の使用方法
  • MySQL ユーザーの作成と認証方法
  • mysql インデックスの追加 mysql インデックスの作成方法
  • MySQL の左結合、右結合、内部結合の使用法の超詳細な分析
  • MySQL での replace の使用
  • Mysqlのバージョン番号を確認するいくつかの方法
  • Mysql コマンドラインで SQL データをインポートする
  • MySQL のルート パスワードを忘れた場合にそれを表示または変更する方法 (画像とテキスト付き)
  • MySQLデータベースへのリモート接続を有効にする方法

<<:  行の高さと垂直方向の配置に関する包括的な理解

>>:  Dockerを使用してシンプルなJava開発およびコンパイル環境を構築する方法の詳細な説明

推薦する

Ubuntu 基本チュートリアル: apt-get コマンド

序文apt-get コマンドは、Ubuntu システムのパッケージ管理ツールです。パッケージのインス...

Linux環境でのActiveMQ導入方法の詳しい説明

この記事では、Linux 環境での ActiveMQ の展開方法について説明します。ご参考までに、詳...

Vue px to rem 構成の詳細な説明

目次方法1 1. 構成とインストールの手順:方法2方法3要約する方法1 1. 構成とインストールの手...

Linux システムで MySQL データベースにリモート接続する方法のチュートリアル

序文最近、職場でこの要件に遭遇し、リモート接続を確立するのに 1 時間以上かかりました。ローカル コ...

docker を使用して hbase をデプロイする方法

スタンドアロンの hbase について、まずは説明しましょう。 Dockerをインストールするまず ...

MySQL でよく使われる連結文のまとめ

はじめに: MySQL では、CONCAT() 関数を使用して複数の文字列を 1 つの文字列に連結し...

ウェブページのFOUC問題によるウェブページの混乱の解決策

FOUC は Flash of Unstyled Content の略で、FOUC と略されます。簡...

WeChatアプレットは写真の撮影とアルバムからの写真の選択を実現します

この記事では、WeChatアプレットで写真を撮ったり、アルバムから写真を選択したりするための具体的な...

CSS のみを使用して折りたたまれたヘッダー効果を作成する方法の例コード

折りたたまれたヘッダーは、特別オファーや重要なお知らせなど、ユーザーにとって重要な情報を表示するのに...

JavaScript関数の使い方の詳細な説明

目次1. 関数を宣言する2. 関数の呼び出し3. 関数パラメータ4. 関数の戻り値5. 議論の使用6...

MySQL 8.0.25 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.25の最新のダウンロードとインストールのチュートリアルは参考になります。具体的な...

25 個の CSS フレームワーク、ツール、ソフトウェア、テンプレートを共有

スプライトカウダウンロード CSS リントダウンロード プレフィックスダウンロード 1140px C...

MybatisはSQLクエリのインターセプションと変更の詳細を実装します

序文インターセプターの機能の 1 つは、特定のメソッドの呼び出しをインターセプトできることです。イン...

WeChatアプレットでSVGアイコンを使用する方法

SVG は、さまざまな利点があるため、近年広く使用されています。残念ながら、WeChat ミニプログ...

単一の Nginx IP アドレスに複数の SSL 証明書を設定する例

デフォルトでは、Nginx は IP アドレスごとに 1 つの SSL 証明書のみをサポートします。...