MySQLのの原則

  記事では、簡単な紹介がある基本的なMySQLのインデックスを、この記事では、それを説明する原則の実現に焦点を当てています。インデックスの定義ではなく、我々の議論の範囲内で、関係代数の概念の厳密な定義を使用する必要が、ここで我々は唯一の共通のインデックスMySQLのエンジンを議論し、これらのエンジンはなぜB +ツリーを選択し、実際には非常に複雑ですか?

指標の性質

  MySQLはインデックスの公式な定義です:インデックス(指数)は、MySQLが効率的にデータのデータ構造を得るのを助けるために。文トランクを抽出するには、インデックスの本質を得ることができます。インデックスは、データ構造です。

  私たちは、データベースクエリがデータベースの最も重要な機能の一つであることを知っています。我々は、すべての設計者は、クエリアルゴリズムの観点からデータベースシステムを最適化することができますので、データレートは、できるだけ速くすることができ照会します。もちろん、最も基本的なクエリアルゴリズムであるシーケンシャルサーチ(線形検索)、この複雑さは明らかである悪い時間O(n)は、大量のデータでは、アルゴリズム、およびコンピュータサイエンスの良い開発がかなり良く検索アルゴリズムを提供します例えば、二分探索(バイナリサーチ)、二分木検索(二分木検索)等が挙げられます。リトル分析は、データを取得するために命じられた、とバイナリツリーが唯一見つけるために適用することができ、各検索アルゴリズムのみ、このような二分探索要求として、具体的なデータ構造の上に適用することができることでしょう場合は、バイナリ検索ツリーを上が、データそのもの、データに加えて、データベース・システムは、データ構造は、特定の検索アルゴリズムを満たす維持するように構造が、データ完全に様々なデータ構造を満足することは不可能である(例えば、理論的には不可能で両者を順に編成されている間)何らかの方法で構造参照(ポイント)のデータは、これらのデータ構造上の高度な検索アルゴリズムを実現することができるように。このデータ構造は、インデックスが作成されます。

  図1は、可能なインデックスを示します。左側には、データテーブルで、左端2つの7つのレコードの合計は、データレコード(論理的にディスク上に記録注意に隣接しても、必ずしも物理的に隣接していない)の物理アドレスです。あなたがバイナリ検索を使用できるように、それぞれ、右側に示す二分探索木を維持することができ、各ノードは、インデックスキーと物理アドレスに対応するデータレコードへのポインタを含む参照Col2にを促進するためにO L O G 2 N- O(log2nの複雑さ)、取得したデータに対応します。

  これは本物のインデックスが、バイナリ検索ツリーまたは進化種用いてほとんど実際のデータベース・システムであるが赤黒木達成する(赤黒木)、その理由は以下に紹介します。

 

  一般的には、インデックス自体も素晴らしいですが、ディスクはすべてのメモリに格納することができないので、インデックスは、多くの場合、インデックスファイルの形式で保存されています。最も重要な指標の指標であるので、この場合には、インデックス・ルックアップ・プロセスは、数桁の高い消費へのメモリアクセス、I / Oアクセスに対して、データ構造のメリットのように評価したディスクI / Oの消費量を生成します発見プロセスにおける進行の複雑さのディスクI / O操作。言い換えれば、インデックスの構造組織は、アクセスのルックアッププロセスのディスクI / Oの数を最小限に抑えます。

  この目的のために、ディスクは、プリフェッチは、一般的にページの整数倍であるたびに、必要な長さを需要をお読みください。各ノードは一つだけI / Oが完全にロードすることができを必要とするように、ノードのデータベースシステムでは、ページのサイズと等しくなるように設定されます。このように一つの物理ノードに確保新しいノードが直接ページ・スペースを適用するたびに、ページに格納されたコンピュータのメモリ割り当てがページ整列結合され、ノードは、単一のI / Oで実現されます MとBツリーに設定された値が非常に大きく、それが完全にロードされたの賛成で、木の高さを低くすることができます

のBツリーの原則

 

B +ツリーの原則

 

Bツリー及びB +ツリーの差

 

なぜMySQLのB +ツリーを選ぶのか?

 

MYISAMとInnoDBの違い

 

おすすめ

転載: www.cnblogs.com/htyj/p/10995630.html