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開発およびコンパイル環境を構築する方法の詳細な説明

推薦する

JavaScript のガベージコレクションの仕組みの詳細な説明

目次ガベージコレクション (GC) はなぜ必要なのでしょうか?ガベージコレクションとは廃棄物の発生ガ...

特定のシンボルで複数の行と列に分割するMySQLの例

一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...

新しい CSS display:box プロパティの詳細な説明

1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...

Ajax リクエストにおけるクロスドメイン問題の原因と解決策

目次1. クロスドメインはどのように形成されるのでしょうか? 2. クロスドメインの根本的な原因3....

MySQLでグローバル変数とセッション変数を設定する2つの方法の詳細な説明

1. MySQL でグローバル変数を変更するには 2 つの方法があります。方法 1: my.ini ...

CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

1. 公式ウェブサイトアドレス公式サイトではインストールの参考手順が紹介されています。公式サイトを見...

Windows 10 の仮想マシンに Mac システムをインストールするグラフィック チュートリアル

1. 仮想マシンバージョン15.5.1をダウンロードする公式サイトから直接最新バージョンをダウンロー...

Ubuntu 18.04 は pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib をインストールします

1. 現在、Pythonのバージョン管理ツールは数多く存在します。その中でも比較的使いやすいのがPy...

sqlとmysqlの違いは何ですか?

SQL とは何ですか? SQL はデータベースを操作するために使用される言語です。 SQL はすべ...

ネイティブ CSS で無限テキストカルーセルを実装する一般的な方法

テキストカルーセルは私たちの日常生活で非常に一般的です。スーパーマーケットや実店舗の入り口には、テキ...

JavaScript進捗管理の詳しい説明

目次序文質問原理テスト序文プログラムを作成するときに、読み込みの進行状況やアップロードの進行状況など...

メニューノードのすべての子ノードを再帰的に検索する MySQL メソッド

背景プロジェクトにはメニューノードのすべてのノードをチェックする要件があります。オンラインでチェック...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

Alibaba Cloud Centos7.X で外部にポートを開く方法

一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...

MacでのMySQL初期化パスワード操作

Macでデータベースを操作する際に個人が遭遇するデータベース起動の問題の簡単な記録1. Apple-...