見通し
記載されているデータ構造:配列、リンクリスト、ハッシュ、赤黒ツリー、Bツリー(B +ツリー、Bツリー)
インデックスに使用されるMySQLのデータ構造(InnoDBエンジン)。
1.は、配列、リンクリストを除外します。
配列は、リンクされたリストは、データストレージとメモリの消費量を大量にサポートしていません。低パフォーマンス。
2.ハッシュを除外します
唯一のハッシュ関数は、ハッシュ値を計算します。変更USER_IDときしかし、生成されたハッシュ値が変更され、あなたは、特定のデータレコードを見つけることができません。
そして、共同インデックス検索インデックスの一部をサポートすることはできません。これは、範囲検索をサポートしていません。
3.赤黒木を除外します
理由:
1)大量のデータ、あまりにも多くの時間がディスクを読み込みます。
2)読むためにあまりにも多くの時間を無駄に。(4バイトだけ一度読むが、各ディスクI / O操作が16Kを消費します)
しかし、HashMapのちょうど赤黒木のため、ハッシュマップのメモリ操作が速く読んでいるので。
上記のような問題のために。新しいとB +ツリー構造
1)のn-ツリー際倍あまりにも多くの問題データの量は、ディスクから読み出さ解決します。
2)データ記憶複数のノードを。
単にノードを格納するデータを通じて要件、1.nツリー、2を満たすようにB +ツリー構造。
B +ツリー
機能
B +ツリーは、Bツリーとは異なっています
- 非リーフノードは、鍵情報のみを保存します。
- これは、すべてのリーフノード間のポインタのチェーンを持っています。
- データレコードは、リーフノードに格納されています。
B +ツリーは、InnoDBストレージエンジンは、B +ツリーインデックスが、その構造を実現使用することで、外部メモリのインデックス構造を実現することがより適切にするためにBツリーに基づいた最適化です。
B +ツリー構造
B +ツリーでは、すべてのノードが同じレベルのリーフノードの順に格納された鍵データレコードに従っているだけでなく、大幅に各ノードに格納されたキー値の数を増加させることができるリーフノード情報のキー値を格納します減少高さ+ツリーB.
B +ツリー構造を満たしていない場合、それはなりスプリット。
例:5つのバンドB +ツリー:ポインタ5(5行)4つのキーワード(4つの記憶)
参考ブログます。https://blog.csdn.net/hao65103940/article/details/89032538
Bツリー
B-Treeがバランスディスク・ストレージ・デバイス規格外のデザインを見つけるための木です。
各ノードは、キー値データ、及びデータ値だけでなく、。データは、各ノード(すなわち、ページ)のための大規模なデータをもたらす場合に、メモリ・ページの各々は、記憶された大量のデータはまた、B-につながる場合、キーの小さな数を格納することができ、限定されますより大きな深さの木、Iクエリ/ O回、それによって、クエリの効率に影響を与えるディスクを増やします。だから、B +ツリー(Bツリーの最適化)が行われています。