Cassandraドキュメント

バージョン

プレリリース版のドキュメントを表示しています。

サイズ階層化コンパクション戦略 (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をグループ化します。

SizeTieredCompactionStrategyは、デフォルトのコンパクション戦略です。他のコンパクション戦略は、cassandra.yamlファイルで定義する必要があります。

STCSオプション

SizeTieredCompactionStrategy (STCS) オプションは、テーブルオプションを使用してテーブルごとに設定します。テーブルのmin_thresholdオプションは、マイナーコンパクションをトリガーする主な値です。マイナーコンパクションには、キースペース内のすべてのテーブルが含まれるわけではありません。

サブプロパティ 説明

enabled

バックグラウンドコンパクションを有効にします。デフォルト値:true

tombstone_compaction_interval

SSTableが作成されてから、CassandraがそのSSTableを削除マーカーコンパクションの対象と見なすまでの最小秒数。SSTableは、テーブルがtombstone_threshold比率を超えた場合に、削除マーカーコンパクションの対象となります。デフォルト値:86400

tombstone_threshold

ガベージコレクション可能な削除マーカーと、含まれるすべての列の比率。比率がこの制限を超えると、Cassandraはそのテーブルのみでコンパクションを開始し、削除マーカーを削除します。デフォルト値:0.2

unchecked_tombstone_compaction

trueに設定すると、Cassandraは、どのテーブルがこの操作の対象となるかを事前チェックせずに削除マーカーコンパクションを実行できます。この事前チェックがなくても、CassandraはSSTableをチェックして、削除マーカーの削除が安全であることを確認します。デフォルト値:false

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

trueに設定すると、修復されたSSTableからのみ削除マーカーを削除できます。目的は、gc_grace_seconds内で修復が実行されない場合に、データが復活するのを防ぐことです。長期間修復を実行しない場合、Cassandraはすべての削除マーカーを保持します — これにより問題が発生する可能性があります。デフォルト値:false