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シリーズのジェネリックについて

推薦する

HTMLエンコードによる文字化け問題について

今日、3年生から質問がありました。彼が書いた HTML コードを開くと、文字化けした文字が表示されま...

Net Core実装プロセス分析のDoc​​kerインストールと展開

1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

MySQL で 1000 万件のレコードをすばやくクエリする方法

目次通常のページングクエリ最適化する方法大きなオフセット使用ID制限大量データ問題の最適化通常のペー...

ダイナミッククロックを実現するJS+CSS

この記事の例では、動的な時計を実装するためのJS + CSSの具体的なコードを参考までに共有していま...

MySQL クエリ フィールド タイプが json の場合の 2 つのクエリ メソッド

テーブル構造は次のとおりです。 id varchar(32) 情報JSONデータ: id = 1 i...

vue3ソースコード解析の簡単な実装方法

目次序文🍹準備🍲vue3 の使い方🍖 実装要約する序文最近、私の最初の公式 vue3 + ts プロ...

htmlハイパーリンクaのクリックイベントの後、hrefで指定されたアドレスにジャンプします。

場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...

HTML における li タグの水平配置の例

ほとんどのナビゲーション バーは、下の図に示すように水平に配置されていますが、これはどのように実現さ...

Vueデータ監視の原理の詳細な説明

目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...

Windows サーバー ファイルをローカルにバックアップする方法、Windows サーバー データ バックアップ ソリューション

重要なデータはバックアップする必要があり、リアルタイムでバックアップする必要があります。そうしないと...

Dockerを使用してコンテナリソースを制限する方法

覗き見の問題サーバーでは、IIS サービスが複数のサイトを展開していると仮定すると、サイトの 1 つ...

MySQL共通ストレージエンジンの機能と使用方法の詳細な説明

この記事では、一般的な MySQL ストレージ エンジンの機能と使用方法を例を使って説明します。ご参...

Linux 上の MYSQL 5.7 でルート パスワードを取得する際の問題 (テスト済み、利用可能)

目次1. --skip-grant-tables 経由で取得する1.1 my.conf を変更し、新...

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...