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.frm
FRM ファイル ストレージ テーブル構造ファイル
test_myisam.MYD
MYD ファイル ストレージ エンジン
test_myisam.NYI
NYI ファイル データ ファイル インデックス ファイル
MyISAM ストレージ エンジンと InnoDB ストレージ エンジンの違いは何ですか?
主に葉の節にあります。
MyISAM存储引擎
:
リーフノードにはアドレスポインタの位置が格納される
ノンクラスタードインデックス(インデックスとデータが1つのファイルに配置されず、インデックスとデータが1つのファイルに集約されない) :
InnoDB存储引擎
リーフ
ノードには対応するノード値が格納されるアドレスポインタ位置へ
クラスタ化インデックス (インデックスとデータを 1 つのファイルに、インデックスとデータを 1 つのファイルに集約)