2016-11-15 5 views
0

VoltDBの場合、テーブルを作成する際に、主キーを使用してコンテンツ違反を防止しています。これにより、主キー索引が自動的に作成され、これがバランスツリーになります。私はまた、テーブルのハッシュインデックスを作成し、私はハッシュインデックスを使用し、プライマリキーインデックスを使用しないようにしたい。クエリの実行中にハッシュインデックスを使用するための設定はありますか?デフォルトの主キー索引付けがVoltDBで使用されないようにするにはどうすればよいですか?

答えて

1

VoltDBは、赤黒のツリーインデックスを使用するか、ハッシュインデックスを使用するかを決定するための規則を使用します。規約では、インデックスの名前に部分文字列「ハッシュ」(大文字と小文字を区別しない)を含めることになっています。接頭辞、接尾辞、または名前の途中のどこかにすることができます。

私の経験では、インデックスは完全にメモリ内であるため、ツリーとハッシュインデックス間のパフォーマンスにはほとんど違いがありません。それは両方の方法を試し、性能対空間の使用を比較してどちらが最善かを判断する価値があります。

また、テーブルの主キーを宣言するための構文スタイルがいくつかあります。名前を付ける必要はありませんが、それをツリーまたはハッシュインデックスにするかどうかを宣言することができます。主キーの索引は、望むとおりに作成されていないため、重複した索引を作成する必要はありません。以下に2つの例を示します。

CREATE TABLE Version (
    Major SMALLINT NOT NULL, 
    Minor SMALLINT NOT NULL, 
    baselevel INTEGER NOT NULL, 
    ReleaseDate TIMESTAMP, 
    CONSTRAINT Version_Hash_Idx PRIMARY KEY 
     (Major, Minor, Baselevel) -- hash index 
); 

CREATE TABLE Version (
    Major SMALLINT NOT NULL, 
    Minor SMALLINT NOT NULL, 
    baselevel INTEGER NOT NULL, 
    ReleaseDate TIMESTAMP, 
    PRIMARY KEY (Major, Minor, Baselevel) -- default tree index 
); 
関連する問題