4

1) datastax キー キャッシュに従って、行キーのプライマリ キー インデックスが格納されます。

2) このケースでは、キー キャッシュに十分なメモリが割り当てられており、同じキーが異なる列を持つ複数の sstable に存在します。

3) 複数の sstables からこれらすべての同じキーにアクセスするための呼び出しが行われない場合、インデックスはどのようにキー キャッシュに格納されますか? すべてのsstableのインデックスを保存しますか、それともキーが最近アクセスされた最後のsstableのインデックスを保存しますか?

4

1 に答える 1

5

Docから

キーキャッシュは、列ごとにメモリ内のキーの場所を保持します。

キーキャッシュは、存在するすべてのsstableのキーのインデックスとして機能します。

キーキャッシュはsstableごとに維持されます。したがって、キーキャッシュは、SSTable[最小]ごとに1つのディスクシークを節約できます。すべてのキールックアップは、すべての安定版のブルームフィルターに少なくともヒットすることになります。成功すると、sstableインデックス[デフォルトで127の間隔でキーサンプルへのポインタ]ルックアップをスキップするためだけにキーキャッシュが検証されます。

カサンドラのパスを読むはこのようになります

Memtable->行キャッシュ(オフヒープ)->ブルームフィルター->キーキャッシュ->SSTableインデックス[ミスした場合] ->ディスク

太字のすべては、それらがメモリ内に維持されていることを意味します(ヒープ内またはヒープ外のいずれか)。したがって、それらはディスクシークに加算されません

すべてのsstableは、独自のキーキャッシュを維持する必要があります。スライド番号101のソースとスライド番号23のソース2

キーキャッシュミスの場合、sstableインデックスが使用されます。これにより、128番目の範囲でキーが存在する可能性のある手がかりが得られます。それ以降、キーのディスクシークが開始されます[1から多数の場合があります]。

cassandraがすべてのsstableのキーキャッシュサイズをどのように決定するかについての手がかりが得られたら、もう一度答えを更新します[key_cache_conf / no_of_sstables]?

于 2012-06-20T07:16:48.517 に答える