MySQL InnoDB MRR 最適化ガイド

MySQL InnoDB MRR 最適化ガイド

序文

MRR は Multi-Range Read の略で、ランダム ディスク アクセスを削減し、ランダム アクセスをより順次的なアクセスに変換することを目的としています。 range/ref/eq_ref タイプのクエリに適用可能です。

実施原則:

1. セカンダリ インデックスを検索した後、クラスター化インデックスで取得したプライマリ キーに基づいて必要なデータを検索します。

2. セカンダリ インデックスの順序はクラスター化インデックスの順序と必ずしも一致しないため、セカンダリ インデックス検索によって取得される主キーの順序は不確実です。

3. MRR がない場合、クラスター化インデックスの検索中にデータ ページが順序どおりに読み込まれない可能性があり、これは機械式ハード ドライブにとって非常に不利です。

4. MRR最適化手法:

  • 見つかったセカンダリ インデックス キー値をキャッシュに格納します。
  • キャッシュ内のキー値を主キーで並べ替えます。
  • 実際のデータ ファイルには、並べ替えられた主キーの非クラスター化インデックスに基づいてアクセスされます。

5. オプティマイザーが MRR を使用すると、実行プランの Extra 列に「Using MRR」と表示されます。

6. クエリで使用されるセカンダリ インデックスの順序が結果セットの順序と一致している場合は、MRR を使用した後に結果セットをソートする必要があります。

MRR を使用すると、バッファー プール内のページが置き換えられる回数を減らし、キー値クエリ操作をバッチ処理することもできます。

MRR が有効になっているかどうかを確認するには、コマンドselect @@optimizer_switch;を使用できます。

index_merge=オン、index_merge_union=オン、index_merge_sort_union=オン、index_merge_intersection=オン、engine_condition_pushdown=オン、index_condition_pushdown=オン、mrr=オフ、mrr_cost_based=オン、block_nested_loop=オン、batched_key_access=オフ、materialization=オン、semijoin=オン、loosescan=オン、firstmatch=オン、duplicateweedout=オン、subquery_materialization_cost_based=オン、use_index_extensions=オン、condition_fanout_filter=オン、derived_merge=オン、use_invisible_indexes=オフ、skip_scan=オン

mrr_cost_based=on MRR をコストベースで使用するかどうかを示します。

MRR をオンまたはオフにするには、 set @@optimizer_switch='mrr=on/off';コマンドを使用します。

select @@read_rnd_buffer_size ;このパラメータは、キー値のバッファ サイズを制御するために使用されます。デフォルト値は 256K です。パラメータ値より大きい場合、エグゼキュータはキャッシュされたデータを主キーに従ってソートし、主キーを通じて行データを取得します。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解
  • MySQL InnoDB row_id 境界オーバーフロー検証方法の手順
  • MySQL InnoDB のトランザクション特性を確保するにはどうすればよいですか?
  • MySQL 起動エラー InnoDB: ロックできません/ibdata1 エラー
  • MySQL InnoDB のロック機構の詳細な説明
  • MySQL (InnoDB) がデッドロックを処理する方法の詳細な説明
  • MySQL 学習 (VII): Innodb ストレージ エンジン インデックスの実装原理の詳細説明
  • MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明
  • MySQL ストレージエンジン InnoDB の設定と使用方法の説明
  • MySQL Innodb ストレージ構造と Null 値の保存の詳細な説明

<<:  Reactイベントバインディングの詳細な説明

>>:  Centos7 Zabbix3.4 メールアラーム設定(メール内容がxx.bin添付ファイルになる問題の解決)

推薦する

HTMLシールドの右クリックメニューと左クリック入力機能の例

右クリックメニューを無効にする <body oncontextmenu=self.event....

JSに関する7つの面接の質問、あなたはいくつ正しく答えられますか

序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...

Vue3 コンポジション API でロジックの再利用を実装する方法

Composition API はロジック再利用手順を実装します。ロジックコードを関数に抽出します。...

Dockerを使用してDjango+MySQL8開発環境をデプロイする方法の詳細な説明

しばらく前にシステムを再インストールしましたが、バックアップを取っていなかったので、コンピューター上...

JS は Web ページナビゲーションバーの特殊効果を実現します

この記事では、ネイティブ JS を使用して実装された実用的な Web ナビゲーション バー効果を紹介...

HTML知識ポイントの実践経験のまとめ

1. 表タグはtable、trは行、tdはセル、cellspacingはセル間の距離、cellpad...

CSS3 で QR コードスキャン効果を実装する例

オンラインプレビューhttps://jsrun.pro/AafKp/まず効果を見てみましょう:最初の...

MySQL InnoDBセカンダリインデックスのソート例の詳細な説明

ソート問題最近、Geek Time の「45 Lectures on MySQL Practice」...

JavaScript の例におけるループの使用法の詳細な説明

退屈だったので、ループに関する簡単な演習をいくつかまとめてみました。JS を学び始めたばかりの方に役...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

MySQL 権限制御の詳細な説明

目次mysql 権限制御権限システムテーブル変更後にMySQLの権限を有効にする方法権限の付与と取り...

均一なアニメーション効果を実現するJavaScript

この記事の例では、JavaScriptで等速アニメーションを実装するための具体的なコードを参考までに...

WeChatミニプログラムでトークンの有効期限を処理する方法

目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...

phpmyadmin を使用して MySQL 権限を設定する方法

目次ステップ 1: root ユーザーとしてログインします。ステップ 2: 新しいデータ テーブルを...

Javascriptの基礎を学ぶための10の重要な質問

目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...