hashed
このDictionaryは、ハッシュテーブルの形式で完全にメモリ上に格納されます。このDictionaryには、任意の識別子を持つ要素をいくつでも含めることができます。実際には、キーの数は数千万件に達することがあります。
Dictionaryキーの型は UInt64 です。
あらゆる種類のソースがサポートされています。更新時には、データ (ファイルまたはテーブルから) が全件読み込まれます。
設定例:
LAYOUT(HASHED())<layout>
<hashed />
</layout>設定付きの設定例:
LAYOUT(HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<hashed>
<!-- shards が 1 より大きい場合(デフォルトは `1`)、Dictionaryは
データを並列に読み込みます。1 つの
Dictionaryに非常に大量の要素がある場合に有効です。 -->
<shards>10</shards>
<!-- 並列キュー内のブロック用バックログのサイズ。
並列読み込みにおけるボトルネックは再ハッシュであるため、
スレッドが再ハッシュを実行している間に
処理が停滞しないよう、ある程度の
バックログが必要です。
10000 はメモリと速度のバランスが良好な値です。
10e10 個の要素があっても、処理不足を起こさずに負荷をさばけます。 -->
<shard_load_queue_backlog>10000</shard_load_queue_backlog>
<!-- ハッシュテーブルの最大負荷率です。値を大きくすると、メモリを
より効率的に使用できます(無駄なメモリが減ります)が、読み取り性能が
低下する可能性があります。
有効な値: [0.5, 0.99]
デフォルト: 0.5 -->
<max_load_factor>0.5</max_load_factor>
</hashed>
</layout>sparse_hashed
hashed と似ていますが、CPU 使用量が増える代わりに、メモリ使用量を抑えられます。
辞書キーの型は UInt64 です。
設定例:
LAYOUT(SPARSE_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<sparse_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</sparse_hashed>
</layout>このタイプの Dictionary では shards も使用できます。また、sparse_hashed は hashed より低速なため、shards の利用は hashed よりも sparse_hashed のほうが重要です。
complex_key_hashed
このストレージタイプは、複合キーで使用します。hashed に似ています。
設定例:
LAYOUT(COMPLEX_KEY_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<complex_key_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</complex_key_hashed>
</layout>complex_key_sparse_hashed
このタイプのストレージは、複合キーで使用します。sparse_hashedに似ています。
設定例:
LAYOUT(COMPLEX_KEY_SPARSE_HASHED([SHARDS 1] [SHARD_LOAD_QUEUE_BACKLOG 10000] [MAX_LOAD_FACTOR 0.5]))<layout>
<complex_key_sparse_hashed>
<!-- <shards>1</shards> -->
<!-- <shard_load_queue_backlog>10000</shard_load_queue_backlog> -->
<!-- <max_load_factor>0.5</max_load_factor> -->
</complex_key_sparse_hashed>
</layout>