Bツリーとビットマップの違い

Anonim

Bツリーとビットマップ

Oracleに使用される索引には2種類あります。これらはBツリーとビットマップです。これらの索引は、パフォーマンスのチューニングに使用されます。実際には、レコードを検索して、かなり高速に検索します。索引関数は、索引付けされた列に表示されるすべての値の項目を作成します。 Bツリー索引は、OLTPシステムで使用されるタイプで、主にデフォルトで実装されます。一方、ビットマップは、ほとんどの場合、データウェアハウスに採用されている高度に圧縮されたインデックス形式です。

<!ビットマップは、一般に、どのようなパフォーマンス上のメリットとストレージの節約が求められるかもしれないが、索引付けの方法と呼ばれることがあります。前述のように、その使用は主にデータウェアハウジング環境にあります。これは、データの更新頻度があまり高くなく、環境内でアドホックなクエリが多いためです。 Bitmapの実装では、基数の低いデータが優先されます。性別などのオプションが低い列項目の場合、ビットマップが優先されます(2つの値のみが使用され、優先されます)。倉庫内の静的データは、ビットマップを使用して優れたデータ特性を実現します。ビットマップのもう1つの特徴は、ビットのストリームであり、各ビットはテーブルの単一行の列値に実装されます。

<! - 2 - >

一方、Bツリー索引は、非常に一意の値を含む列に作成される索引です。 Bツリー索引には、各項目が検索キー値を持ち、指定された行と値を参照するポインターが並んでいる項目があります。問題の値に関連する一致する制約がサーバーによって検出された場合、ポインターが展開されて行がフェッチされます。

2つの違いの1つは、B-Treeでは重複が少なく、共起性が高く、ビットマップでは逆のことです。ビットマップは重複インスタンスが高く、安心感があります。ビットマップ索引は、指定された列の基数が低いため、数百万の行を持つ表があるため、Bツリー索引よりも有利です。 Bitmapの索引は、Bツリー索引ではなく、より良いパフォーマンスを提供します。

<!小さなデータセットが収集されると、Bツリーは非常に高速に見えますが、ほとんどの場合、データはデータベースサイズの10%を超えてはいけません。これらの2つは、多くの異なる値が索引付けされている場合に一緒に機能します。また、Bツリーには独自のものがあり、いくつかのインデックスを結合して非常に効率的なプログラムを作成することができます。一方、ビットマップは、効率を最大化するためにインデックス値が低い場合に最適に動作する傾向があります。サブセットデータの10%を超える大きなデータサブセットを探す場合、Bツリーは劣る。ビットマップは、明確な価値がほとんどない場合に効果的なので、高品質の結果を提供するためにこの課題に取り組んでいます。

Bツリーを使用するビジー・テーブルに多数の索引がある場合、索引付きデータを挿入するとき、または索引付けされたデータを挿入および更新する必要がある場合、小さな罰則が課せられます。これは、問題のサイズが何であれ、値の挿入や更新に非常に効率的であるため、Bitmapでは問題ありません。

Bツリーとビットマップは、Oracle

で使用される2種類の索引です。索引付けの方法は、パフォーマンス上の利点とストレージの節約を提供します。

Bツリー索引は、非常にユニークな値を含む列

Bツリーは、多くの個別の索引付けされた値で最も効果的です。

ビットマップは、多くの個別の索引付けされた値で最も有効です。