データベースインデックスB +ツリーの原理

Bツリーを理解する前に、Bツリーを簡単に紹介しましょう。

** Bツリー:**データベースデザイナー、ノードにデータを格納し、ツリーの形式でデータを格納し、ノードのサイズをページに設定します。取得に4つのアクセスが必要な場合、ノードの読み取りにはI / O操作が必要です。各ノード、ルートノードはメモリに常駐しているため、この取得を完了するには3つのioが必要です。
次に、データが小さいほど、各ページに格納されるデータが多くなり、ツリーの高さが低くなり、IOが少なくなり、検索が速くなります。

インデックスは上記のプロパティを使用し、B +ツリーとして設計されています。
** B +ツリー:**非リーフノードはキーのみを格納し、リーフノードはデータを格納し、リーフノードは隣接するリーフノードへのポインターを持ちます。
ここに画像の説明を挿入
一方で、非リーフノードはより多くのレコードを格納でき、ツリーは短くなりますio一方、インターバルクエリのパフォーマンスは、シーケンシャルポインターを使用して改善できます。

MySQLは通常、インデックスとしてB +ツリーを使用しますが、クラスター化インデックスと非クラスター化インデックスによって実装が異なります。

  • クラスター化インデックス(主キーインデックスツリー)
    いわゆるクラスター化インデックスは、B +ツリーのリーフノード上のデータを指し、データ自体がキーであり、キーが主キーです。一般的なインデックスの場合、データは対応するプライマリインデックスを指します。

  • 非クラスター化インデックス(非主キーインデックスツリー)
    非クラスター化インデックスは、B +ツリーのリーフノード上のデータを指します。データ自体ではなく、データが格納されているアドレスを指します。

非クラスター化インデックスには、クラスター化インデックスよりもデータを読み取るためのIO操作が1つ多いため、検索パフォーマンスが低下します。

主キーインデックスツリーのリーフノードは、直接クエリするデータの行全体だからです。主キーのインデックスではないリーフノードは、主キーの値です。主キーの値が見つかった後、主キーの値を介して別のクエリを実行する必要があります。このプロセスは、テーブルにコールバックされます

元の記事を34件公開 Likes0 Visits 1089

おすすめ

転載: blog.csdn.net/qq_42634696/article/details/104801271