この問題を理解する前に、まず 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 メソッド)
コンテナの起動時に Docker コンテナ内のアプリケーション サービスを自動的に起動する場合。 D...
複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...
SeLinuxを無効にするsetenforce 0永久に閉店: vi /etc/selinux/c...
1. MYSQLのインストール1. ダウンロードしたMySQLインストールファイルmysql-5.5...
以下は、私のプロジェクトでこのプロパティを使用する方法の例です。 (1)激しく透明な浮遊コードをコピ...
目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...
目次JSX環境の構築プロジェクトの設定NPMを初期化するwebpackをインストールするBabelを...
目次概要0. JavaScriptとWeb開発の基礎1. Vueの基本概念Vue コア機能コンポーネ...
聞く: CSS を使用してハイパーリンクのスタイルを設定しましたが、ホバーしても機能しません。なぜこ...
Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...
1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...
目次1. プロジェクト開発において、コンポーネント間の最も一般的な関係は次の 2 つのタイプに分けら...
1. 概要ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージ...
テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...
<p><b>これは太字フォントです</b></p> ...