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

推薦する

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

Javascript DOM、ノード、要素取得の紹介

目次DOMノード要素ノード:テキストノード:プロパティ ノード:要素を取得getElementByI...

MySQL の一般的な日付比較および計算関数

MySql での時間比較の実装unix_timestamp() unix_timestamp 関数は...

Tomcat は親の委任メカニズムを破壊して Web アプリケーションの分離を実現します。

目次Tomcat クラスローダー階層WebAppクラスローダー共有クラスローダーカタリナクラスローダ...

CentOS8 yum/dnfで国内ソースを設定する方法

CentOS 8 ではソフトウェア パッケージのインストール プログラムが変更され、yum 構成方法...

show processlist コマンドによる MySQL パフォーマンス検査の説明

show processlist コマンドは非常に便利です。MySQL の実行が 50% 以上になる...

テーブルの最大幅と最小幅を設定する際の互換性の問題と解決策の詳細な説明

テーブル内の min-width と max-width プロパティの設定 <テーブル>...

Linux resolv.conf の簡単な分析

1. はじめにresolv.conf は、さまざまなオペレーティング システムのドメイン ネーム シ...

シンプルなドラッグ効果を実現するjs

この記事では、簡単なドラッグ効果を実現するためのjsの具体的なコードを参考までに共有します。具体的な...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

Windows Server 2016 に Oracle をインストールする方法

1. Oracle をインストールします。インターネット上には Oracle のインストール手順が多...

サイバーパンクスタイルのボタンを実現するためのHTML+CSS

まず効果を見てみましょう: 序文:このアイデアは、Bilibili のアップロード者 Steven ...

MySql インデックス使用戦略の分析

MySql インデックスインデックスの利点1. 一意のインデックスまたは主キー インデックスを作成す...

英語: リンクタグはIEでhrefを自動的に補完します

英語: IE では、リンク タグによって href が自動的に補完されます。 Ajax Link T...