これは下位レベルから上位レベルに移行します。アンチエントロピー修復から流出したHHからの突然変異、読取り修復、またはストレスは、それをちょっと上げてしまう古いレベルを下位レベルに置くことができます。 TWCSは少し上手くやっていますが(それでも本当に素晴らしいわけではありません)。
レベルごとに1つのみ(STCの例外L0)を読み込み、sstablesの経過時間(レベルに対応する傾向があります)の順に歩きます。いったんすべての列を取得すると、以前のsstablesを読み込む必要がなくなるため、古いsstablesのデータが失われてLWW競合で失われることがわかっているため、停止することができます。
カウンター、フリーズされていないUDTS、および墓石の周りには、すべてのステーブルを読む必要がある状況があります。
90%は、パーティションの更新がない場合に発生します。 theresはまた、10%の偽陽性率(lcsのデフォルト)を持つブルームフィルタなので、90%(ish)は1つのsstableにしか当てられません。
時系列のように更新された重い行または広い行では、各レベルの1つのsstableが要求されたパーティションを持つ可能性があります。この場合、すべてのレベルを歩かなければなりません。それらのために必要なものだけを読むためにsstables最小/最大タイムスタンプと最小/最大クラスタリングインデックスを使用します。 min/maxのsstableパーティションをフィルタリングするという点では、クラスタリングが実際に最初に行われたことです。
メトリックnodetool tablehistograms
「読み取りごとのsstables」は、実際には、パーティション/クラスタリングフィルタリングとブルームフィルタチェック(ディスクから読み取る必要がある可能性があるため)の間の読み取り用のsstablesの数です。したがって、このメトリックを使用して、実際にいくつのスールブルが考慮され、ディスクシークを行っているかを確認することができます。
。しかし、私が質問したところでは、低レベルのスレッドが少なく、 "疎"なデータと低レベルの読み取りヒットの確率が非常に低いので、どのように単一のスレッドから90%の読み取りを保証するのですか?ほとんどの場合、読み取り要求ではN個のステーブルを読み取る必要があります(Nはレベルの数です)。 – user3545797
私はコメントのためにあまりにも多くの上記より少し上に説明した –