02-msyql-ストレージエンジン

インデックス作成のための1.オプティマイザアルゴリズム

1.1MySQL自己最適化インデックス-AHI(アダプティブハッシュインデックス)

MySQLのInnoDBエンジンは、唯一のBツリーを作成することができます。
AHIのアクション:
自動評価「熱い」メモリー・インデックス・ページ、ハッシュテーブルのインデックスを生成します。
InnoDBのヘルプは、高速インデックスページをお読みください。インデックスまで読むスピードをお読みください。
かなりのインデックスとインデックス。

自己最適化-changeバッファ1.2MySQLインデックス

このような挿入、更新、削除データとして。
これは、クラスタ化インデックスのためにすぐに更新されます。
セカンダリインデックスのために、リアルタイムで更新されません。
InnoDBのメモリ構造では、挿入バッファ(セッション)を添加することによって、現在のバージョンは変化バッファと呼ばれています。
変更バッファ機能は、セカンダリインデックスを更新する必要一時的にデータをバッファリングすることです。
我々は新しいINSERTクエリのデータを必要とする場合には、二次インデックスが最新であるとき、それは、メモリ内にマージ(併合)の動作になります

1.3はじめに最適化アルゴリズム

MySQLの> @@ 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オフ= 
マテリア=、上
セミジョイン=、上
loosescan =上、
firstmatch =上、
duplicateweedout =上、
subquery_materialization_cost_based =上、
use_index_extensions =上、
condition_fanout_filter =上、
derived_merge =上| 

修改方式:
1.通过更改my.cnfの文件
2.MySQL>セットグローバルoptimizer_switch = 'batched_key_access =オン' ; 开启算法

1.4 ICPインデックスプッシュダウン

図1は 、アプリケーションの関節指数一部のみを解決しました。
2  不要なデータページを低減するためには、走査されます。
3  条件がインデックスを行くことはありません、最初の前にエンジンのデータは、二次濾過層をフェッチ行うcは。
4つの無関係なデータを事前に除外されるであろう。

1.5 MRR(ムーティレンジ読み出し)

セカンダリインデックスは、テーブルにバック---- --->クラスタ化インデックスは、
変換
セカンダリインデックス--->ソートID -テーブルに戻って- >クラスタ化インデックスの   
役割:セカンダリインデックスはソートクラスタ化インデックスをテーブルに戻り

1.6 BNLJ

AとBが一致すると関連する条件は、もはや何度も何度も循環されません。
代わりに、使い捨て戻り結果のマッチングテーブル駆動及び非駆動関連付けられた値のテーブルを使用する使い捨て
IOの数を減少させる、主に最適化をCPU消費量を

1.7 BKA

非駆動関連の表は二次インデックスの使用を最適化するための主な役割、。
BNL + MRR機能。
道を開きます:
MySQLは> = SET、株式会社無料optimizer_switch 'MRR = ON、mrr_cost_based = OFF'を参加; 
MySQLは> = SET、株式会社フリー'はbatched_key_access = ON'をoptimizer_switch参加し、
再ログインを有効にします。

 

おすすめ

転載: www.cnblogs.com/metoyou/p/12341068.html