この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マルチ ツリー、B ツリー、B+ ツリーの違いを比較してみましょう。 MySQL ストレージ構造テーブルストレージ構造単位: 表 > セグメント > 領域 > ページ > 行 データベースでは、1 行を読み取るか複数行を読み取るかに関係なく、これらの行が配置されているページが読み込まれます。つまり、ストレージスペースの基本単位はページです。 B+ツリーインデックス構造
B+ツリーページノード構造いくつかの特徴がある
ページの主な機能はレコードを保存することであり、レコードは単一のリンク リストの形式でページに保存されます。 B+ツリー取得プロセスB+ツリーの取得プロセスを見てみましょう。
B+ ツリー インデックスを使用する理由は何ですか?データベースはページを通じてデータにアクセスします。ページは B+ ツリー ノードです。ノードへのアクセスは I/O 操作に相当するため、ノードの検索速度が速いほど、検索パフォーマンスが向上します。 次に、バイナリツリー、マルチフォークツリー、B ツリー、B+ ツリーを比較してみましょう。 バイナリツリー バイナリ ツリーは、バイナリ検索と同等の検索パフォーマンスに優れたバイナリ検索ツリーです。 バイナリ ツリーがリンク リストに退化するのを防ぐために、AVL ツリー (バランス バイナリ サーチ ツリー) が発明されました。これは、任意のノードの左サブツリーと右サブツリーの高さの差が最大 1 であるツリーです。 多枝ツリーマルチフォークツリーはM個のノードを持つことができ、高さを効果的に減らすことができます。高さが減るとノード数が減り、I/Oが自然に減り、バイナリツリーよりもパフォーマンスが向上します。 BツリーB ツリーは単純に複数のブランチを持つツリーであり、各リーフにはデータと次のノードへのポインタが格納されます。 例えば、9を見つけるには、次の手順に従います。
B+ ツリーB+ ツリーは B ツリーの改良版です。簡単に言うと、リーフ ノードのみがデータを保存し、リーフ以外のノードはストレージ ポインターです。すべてのリーフ ノードは順序付けされたリンク リストを形成します。 B+ ツリーの内部ノードにはキーワードの特定の情報へのポインタがないため、その内部ノードは B ツリーの内部ノードよりも小さくなります。同じ内部ノードのすべてのキーワードが同じディスク ブロックに格納されている場合、ディスク ブロックはより多くのキーワードを収容でき、一度に検索する必要があるキーワードの数も増えるため、相対的な IO 読み取りおよび書き込み時間が短縮されます。 たとえば、キーワード16を検索する手順は次のとおりです。
B+ツリーとBツリーの違い:
MySQL が B+ ツリーを使用するのはそのためです。とても簡単です! 上記は、MySQL で B+ ツリー インデックスを使用する利点の詳細な内容です。MySQL で B+ ツリー インデックスを使用する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: 三角形を描画するための CSS 実装コード (border メソッド)
フィルター属性は要素の視覚効果を定義しますぼかし画像にガウスぼかしを適用します。 「半径」の値は、ガ...
まずサンプルコードを見てみましょう: #/bin/bash cal 日付 -u echo "...
Netease Kanyouxi公式サイト(http://kanyouxi.163.com/)(棚...
開発動向: html (ハイパーテキスト マークアップ言語) - xhtml (拡張ハイパーテキスト...
目次1. 型2. インスタンス3. コンストラクター4.toString() この記事では、4 つの...
Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...
ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...
CSS における位置指定の概要position属性は英語で位置を意味し、 CSSでの主な機能は要素...
コードはさらに合理化できますが、時間の制約があるため、まずはここで投稿して、自分で最適化してメニュー...
背景開発プロセス中に Docker コンテナ化をサポートするために、通常は Maven を使用してコ...
vue は、ページ上の div ボックスのドラッグ アンド ドロップ ソート機能を実装します。 序文...
垂直方向では、行の配置を上、中央、下に設定できます。基本的な構文<TR VALIGN=&quo...
分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...
Linux システムには 2 種類のスケジュールされたタスクがあります。1 つは 1 回だけ実行され...
簡単な説明以前 Centos7 で構築し、その後個人開発環境として Ubuntu 20.04 を使っ...