mysql-ハッシュインデックス

ハッシュインデックスは、すべての列のインデックスに基づいてのみ完全一致クエリ有効なハッシュテーブルの実装です。データの行ごとに、ストレージエンジンは、ハッシュコードが小さい値であり、異なる行のキー値は、計算されたハッシュコードが同じではない、すべての索引列のハッシュコードを計算します。ハッシュテーブル内のデータの各列へのポインタを維持しながら、ハッシュインデックスは、すべてのハッシュコードは、インデックスに格納されています。
 
 
mysqlの専用メモリ機関では、明示的な支援ハッシュインデックス。これは、デフォルトのインデックス型メモリエンジンテーブルで、メモリエンジンはまた、B-Treeインデックスをサポートしています。これは、メモリは非一意のハッシュインデックスをサポートするためにあることを言及する価値があります
 
 
 
ハッシュインデックスの制限
図1に示すように、唯一のハッシュ値がハッシュインデックスと行ポインタを含み、フィールドの値が格納されていない、インデックスの値は、行を読み取る回避するために使用することができません。しかし、回線速度アクセスメモリ迅速なので、ほとんどの場合、パフォーマンス上のこの影響は明らかではありません。
図2に示すように、ハッシュインデックスデータが順次格納されたインデックス値に応じてないので、ソートのために使用することができません。
ハッシュインデックスは常にすべてのインデックス列をネットワークを使用して計算されたハッシュ値であるため、3ハッシュインデックスは、見つけるために、部分的に一致する索引列をサポートしていません。例えば、ハッシュインデックスの設立に関するデータ列(A、B)は、クエリのみデータ列A場合は、インデックスを使用することはできません。
図4に示すように、ハッシュインデックスのみを含む=、()内の、<=>(注<>と<=>異なる動作である)。等価比較クエリをサポート たとえば、価格> 100のために、任意の範囲クエリをサポートしていません。
Duoha Xiの競合がない限り5は、アクセス・ハッシュ・インデックス・データは非常に迅速に、(異なるインデックス列の値が同じハッシュ値があります)。ハッシュ衝突が発生した場合は、すべての修飾行が見つかるまで、ストレージエンジンは、ラインの比較によってリンクされた行のポインタそうリスト、ラインを通過しなければなりません
6、ハッシュ衝突多くの単語ならば、なぜインデックス操作のコストの一部が高くなります。例えば、テーブルから行を削除するとき、低選択性(多くのハッシュ衝突)場合、ハッシュインデックスの確立は、次に、ストレージエンジンは、ハッシュ値に対応するリスト内の各行を必要列、検索し、削除基準線、複数の競合、大きなコストに対応
 
 
処理ハッシュ衝突
競合を避けるために、ハッシュ値はどこ条件の列に対応する値を代入しなければなりません。具体的には例えば、のようなクエリを参照していない場合、唯一の統計レコードの数(不正確な)は、直接CRC32()クエリのハッシュ値を用いて、カラム値に持ち込まなくてもよいです。

おすすめ

転載: www.cnblogs.com/kevinleerunqing/p/12034342.html