MySQL クエリ キャッシュとバッファ プール

MySQL クエリ キャッシュとバッファ プール

1. キャッシュ - クエリキャッシュ

次の図は、MySQL 公式サイトから提供されています: MySQL アーキテクチャ システム図。

よく参照されるクエリ キャッシュは、下の図の Cache 部分です。

MySQL がサーバー層とストレージ エンジン層の 2 つの部分に分かれている場合、キャッシュはサーバー層に配置されます。

さらに、次の点も知っておく必要があります。

SQL ステートメントが MySQL サーバーに送信されると、MySQL サーバーはまずクエリ キャッシュをチェックして、その SQL ステートメントが以前に実行されたことがあるかどうかを確認します。以前に実行されたことがある場合、前回の実行のクエリ結果がキーと値の形式でクエリ キャッシュに保存されます。キーは SQL ステートメントであり、値はクエリ結果です。このプロセスをクエリ キャッシュと呼びます。

探しているデータがクエリ キャッシュにない場合、MySQL は後続のロジックを実行し、ストレージ エンジンを通じてデータを取得します。クエリ キャッシュはセッションの共有キャッシュとなり、すべてのセッションで共有されます。

クエリ キャッシュの欠点:

テーブルに SQL 更新がある限り、テーブルのクエリ キャッシュは無効になります。したがって、ビジネスにおけるテーブル CRUD の割合が同様の場合、クエリ キャッシュはアプリケーションのスループット効率に影響を与える可能性があります。

パラメータ query_chache_type=demand を設定することで、クエリ キャッシュを無効にすることができます。また、MySQL 8.0 バージョンでは、クエリ キャッシュ モジュールが削除されました。

そのため、ご自身の状況に応じて機能を無効にする必要があるかどうかを検討することができます。

バッファプール

繰り返しになりますが、MySQL がサーバー層とストレージ エンジン層の 2 つの部分に分かれている場合、バッファー プールはストレージ エンジン層にあります。

実際、接続プールであろうとキャッシュプールであろうと、XXX プールである限り、高速化のために設計されていることは誰もが知っています。たとえば、データの読み取りを高速化するために、オペレーティング システムのファイル システムは、毎回非効率的なランダム ディスク IO に対してバッファ書き込みメカニズムを設計します。

バッファ プールは、データの読み取りを高速化するために MySQL ストレージ エンジンによって設計されたバッファリング メカニズムです。下の図の灰色の部分が BufferPool のマインドマップです。 (手書き文字は本物で、とても美しいです!)

以上がMySQLクエリキャッシュとバッファプールの詳細です。MySQLクエリキャッシュとバッファプールの詳細については、123WORDPRESS.COMの他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • MySQL Innodbの主な機能挿入バッファ
  • MySQLのバッファプールの詳細な説明
  • mysql 最適化のための重要なパラメータ key_buffer_size table_cache
  • mysql key_buffer_size設定を最適化する
  • mysql read_buffer_size の適切な設定は何ですか?
  • MySQL ソートが中止されました: ソート メモリが不足しています。サーバーのソート バッファ サイズを増やすことを検討してください。
  • MySQL ソースコードから Innodb バッファヒット率の計算を分析する
  • PHP での MySQL 操作バッファの使用法の詳細な説明
  • Mysql の最適化とチューニングにおける 2 つの重要なパラメータ: table_cache と key_buffer
  • mysql key_buffer_sizeパラメータの最適化設定
  • mysqldump によるバッファプール汚染の調査
  • MySQL 結合バッファの原理

<<:  HTMLフォーム要素の詳しい解説(パート1)

>>:  C++ TpeScriptシリーズのジェネリックについて

推薦する

MySQL 5.7 の sql_mode のデフォルト値によって生じる落とし穴と解決策

通常のプロジェクト開発中に、MySQL バージョンが 5.6 から 5.7 にアップグレードされた場...

Nginx+Keepalived でデュアルマシン マスターとバックアップを実装する方法

序文まず、高性能サーバーの高可用性またはホットスタンバイソリューションである Keepalived ...

サイトマップをウェブページの下部に配置するメリットと例

以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...

Ubuntu の起動後にアプリケーションを実行するためのターミナルの設定方法

1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...

Dockerでmongodbデータベースを使用するための実装コード

mongoイメージを取得する sudo docker pull mongo mongodbサービスを...

UbuntuはCUDAの複数のバージョンをインストールし、いつでも切り替えることができます

CUDA とは何かを紹介するのではなく、複数の CUDA バージョンの共存とリアルタイム切り替えをど...

js を使用して QR コードを生成するサンプル コード

以前、プロジェクトでQRコードをスキャンして情報を表示する機能を開発する必要がありました。インターネ...

MySQL のインデックスとデータ テーブルを管理する方法

目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...

LinuxシステムにISOファイルをインストールする方法

Linux システムで iso ファイルをインストールするにはどうすればいいですか?インストール手順...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

オンラインMySQLオプティマイザの誤判断によって発生した低速クエリイベントを記録する

序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...

Vue+Element UIはドロップダウンメニューのカプセル化を実現します

この記事の例では、ドロップダウンメニューのカプセル化を実装するためのVue + Element UI...

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

この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...

Linuxで大きなファイルを素早くコピーする方法

データをコピーリモートでデータをコピーする場合、通常は rsync コマンドを使用しますが、小さなフ...

MySQLの暗黙的な変換問題の解決

1. 問題の説明 root@mysqldb 22:12: [xucl]> テーブル t1\G ...