データ構造---B+ツリー

B+ツリー

他の人がこの言葉を言うのを聞くB+Treeと、いつの間にか頭が真っ白になり、混乱していました。今日は、空いた時間を使って、B+Tree について簡単に理解しました。B+Tree について簡単に知ってみましょう!

B+Tree の概要

B+Tree : ディスクなどの外部ストレージデバイス用に設計されたバランスの取れた検索ツリーです。
その保管特性は何ですか?

ストレージ機能
子葉ノードはデータ (データ要素のアドレス ポインタの位置など) を格納し、非リーフ ノードはインデックスを格納します。
リーフ ノードはポインタによって接続されます提高区间访问性能

以下の図に従って、
Mysqlについて簡単に説明します每个叶子节点设置大小为16K
値 15 を例として、一般的な ID は bigint タイプを使用します。これはおそらく 8Bigint バイトを割り当てます (値 15 の隣のスペースは) ディスク アドレス ポインタですおそらく 6Bitint バイトが割り当てられます。2,000
万のデータを例にとると、高さ 3 の B+tree データ構造です。
リーフ ノードは約 1170 個の要素を保存できます。
非リーフ ノードは 16 個の要素を保存できます。IO
読み取りおよび書き込み操作のみが必要です。クエリ対象のデータに対してクエリを 2 ~ 3 回実行します。

折半查找:
以下の図を見てください。
非リーフ ノードは事前にメモリに直接ロードされます。たとえば、インデックス 20 を検索する場合、2 回前に配置された非リーフ ノードはすべてメモリ内で検索されます。 、ディスクで IO 操作を実行する必要はなく、半検索を実行する必要があり、リーフ ノードはディスク データをメモリにロードするために 1 回の IO 操作を実行するだけで済みます。
ここに画像の説明を挿入

MySQLテーブルデータファイル

test_myisam.frmFRM ファイル ストレージ テーブル構造ファイル
test_myisam.MYDMYD ファイル ストレージ エンジン
test_myisam.NYINYI ファイル データ ファイル インデックス ファイル

ここに画像の説明を挿入

MyISAM ストレージ エンジンと InnoDB ストレージ エンジンの違いは何ですか?

主に葉の節にあります。
MyISAM存储引擎
リーフノードにはアドレスポインタの位置が格納される
ノンクラスタードインデックス(インデックスとデータが1つのファイルに配置されず、インデックスとデータが1つのファイルに集約されない) :
InnoDB存储引擎リーフ
ノードには対応するノード値が格納されるアドレスポインタ位置へ
クラスタ化インデックス (インデックスとデータを 1 つのファイルに、インデックスとデータを 1 つのファイルに集約)

おすすめ

転載: blog.csdn.net/xiaohua616/article/details/131755494