サイズ階層化コンパクション戦略 (STCS)
統合コンパクション戦略 (UCS) は、Cassandra 5.0 以降のほとんどのワークロードに推奨されるコンパクション戦略です。新しいテーブルを作成する場合は、この戦略を使用してください。 |
SizeTieredCompactionStrategy (STCS)
は、書き込み集中型のワークロードに推奨され、従来の推奨コンパクション戦略です。他の戦略が指定されていない場合、デフォルトのコンパクション戦略です。
STCSは、Cassandraが同様のサイズのSSTableを一定数(デフォルト:4)蓄積すると、コンパクションを開始します。STCSはこれらのSSTableを1つのより大きなSSTableにマージします。これらのより大きなSSTableが蓄積されると、STCSはそれらをさらに大きなSSTableにマージします。任意の時点では、さまざまなサイズのSSTableがいくつか存在します。
STCSは書き込み集中型のワークロードをコンパクションするのにうまく機能しますが、サイズによるマージプロセスではデータが行ごとにグループ化されないため、読み取りが遅くなります。このため、特定の行のバージョンが多数のSSTableに分散する可能性が高くなります。また、STCSのコンパクションのトリガーはSSTableのサイズであるため、削除されたデータを予測どおりに削除しません。ただし、SSTableが定期的にマージして古いデータを削除するのに十分な速度で増加しない場合があります。
ほとんどのSTCSコンパクションは、少数のSSTableを1つにマージするマイナーコンパクションです。対照的に、STCSでメジャーコンパクションを実行する場合、コンパクション中に、データディレクトリごとに2つのSSTable(修復されたデータ用と修復されていないデータ用)が存在します。最大のSSTableのサイズが大きくなるにつれて、STCSコンパクション中に新しいSSTableと古いSSTableの両方が同時に必要なディスク容量が、ノード上の一般的なディスク容量を超過する可能性があります。この現象はスペース増幅と呼ばれ、SSTableサイズの増大という問題と、クラスターのコンパクション実行能力を超えるという問題につながります。メジャーコンパクションはSTCSには推奨されません。
STCSは、マージするSSTableを決定するために、SSTableの平均サイズの計算に依存します。このプロセスはバケット化と呼ばれます。次のオプションは、その平均サイズに基づいて、SSTableがグループ化されるバケットを計算するために使用されます。バケット化プロセスは、SSTableのサイズが平均サイズと50%または150%以上異なる場合に基づいて、SSTableをグループ化します。この計算を別の言い方をすると、バケット化プロセスは、[平均サイズ × bucket_low] と [平均サイズ × bucket_high] 内のサイズを持つSSTableをグループ化します。
|
STCSオプション
SizeTieredCompactionStrategy (STCS) オプションは、テーブルオプションを使用してテーブルごとに設定します。テーブルのmin_threshold
オプションは、マイナーコンパクションをトリガーする主な値です。マイナーコンパクションには、キースペース内のすべてのテーブルが含まれるわけではありません。
サブプロパティ | 説明 |
---|---|
enabled |
バックグラウンドコンパクションを有効にします。デフォルト値:true |
tombstone_compaction_interval |
SSTableが作成されてから、CassandraがそのSSTableを削除マーカーコンパクションの対象と見なすまでの最小秒数。SSTableは、テーブルが |
tombstone_threshold |
ガベージコレクション可能な削除マーカーと、含まれるすべての列の比率。比率がこの制限を超えると、Cassandraはそのテーブルのみでコンパクションを開始し、削除マーカーを削除します。デフォルト値:0.2 |
unchecked_tombstone_compaction |
|
log_all |
クラスター全体の高度なロギングを有効にします。デフォルト値:false |
max_threshold |
マイナーコンパクションで許可するSSTableの最大数。デフォルト値:32 |
min_threshold |
マイナーコンパクションをトリガーするSSTableの最小数。デフォルト値:4 |
bucket_high |
SSTableのサイズがそのバケットの平均サイズの150%未満の場合、SSTableはバケットに追加されます。たとえば、SSTableのサイズが13 MBで、バケットの平均サイズが10 MBの場合、SSTableはそのバケットに追加され、そのバケットの新しい平均サイズが計算されます。デフォルト値:1.5 |
bucket_low |
SSTableのサイズがそのバケットの平均サイズの50%より大きい場合、SSTableはバケットに追加されます。たとえば、SSTableのサイズが6 MBで、バケットの平均サイズが10 MBの場合、SSTableはそのバケットに追加され、そのバケットの新しい平均サイズが計算されます。デフォルト値:0.5 |
min_sstable_size |
この値より小さいSSTableは、平均サイズがこの設定より小さい1つのバケットにグループ化されます。デフォルト値:50MB |
only_purge_repaired_tombstones |
|