コンパクション・サブプロパティ

コンパクション・プロパティとそのサブプロパティのマップの作成。

CQLを使用すると、SizeTieredCompactionStrategy(STCS)、DateTieredCompactionStrategy(DTCS)、およびLeveledCompactionStrategy(LCS)を使用するようにテーブルを構成できます。コンパクション・プロパティおよび以下のサブプロパティのマップを作成します。

STCS用CQLコンパクション・サブプロパティ

コンパクション・サブプロパティ デフォルト 説明
bucket_high 1.5 サイズ階層化コンパクションでは、SSTableのサイズとデフォルトのbucket_low値およびデフォルトbucket_high値の相違が50%以下の場合に同じバケット内にあると見なされます。[平均サイズ × bucket_low, 平均サイズ × bucket_high]
bucket_low 0.5 上記と同じ
cold_reads_to_omit 0.05 無視されたSSTableが考慮する読み取り数/秒の最大パーセント。値の推奨範囲は、0.0〜1.0です。「cold_reads_to_omit」を参照してください。
enabled true バックグラウンド・コンパクションを有効にします。「バックグラウンド・コンパクションを有効および無効にする」を参照してください。
max_threshold 32 マイナー・コンパクションで許可するSSTableの最大数を設定します。
min_threshold 4 マイナー・コンパクションを発動するSSTableの最小数を設定します。
min_sstable_size 50MB STCSは、コンパクション対象のSSTableをバケットにグループ分けします。バケット・プロセスは、サイズの違いが50%未満のSSTableをグループ分けします。その結果、小規模なSSTableの場合に、細分性が小さすぎるバケット・プロセスになってしまいます。SSTableが小規模な場合は、一定値未満のSSTableはすべて同一のバケットに分類されるように、min_sstable_sizeを使用して、サイズのしきい値(単位はバイト)を定義してください。
only_purge_repaired_tombstones false Cassandra 3.0以降では、リペアがgc_grace_seconds内で実行されない場合にユーザーの復活データを避けるために、このオプションが"true"に設定されている場合には、トゥームストーンのみがリペア済みのSSTablesからパージされるようにします。長期間リペアを実行しないとすべてのトゥームストーンが保持され、問題が発生する場合があります。
tombstone_compaction_interval 1 day SSTable作成後、トゥームストーン・コンパクション対象としてSSTableを考慮するまで待つ最小時間。トゥームストーン・コンパクションは、SSTableに、tombstone_thresholdよりも多くのガーベージ・コレクション対象にできるトゥームストーンがある場合に発動されるコンパクションです。
tombstone_threshold 0.2 ガーベージ・コレクションの対象にできるトゥームストーンと、含まれているすべてのカラムとの比率。SSTableがこれを超えた場合、トゥームストーンのパージを目的として、(他のSSTableなしで)コンパクションが発動されます。
unchecked_tombstone_compaction false trueの場合は、通常のトゥームストーン・コンパクションよりも積極的になります。成功の可能性をチェックしないで、SSTableトゥームストーン・コンパクションが1回実行されます。Cassandra 2.0.9以降。

DTCS用CQLコンパクション・サブプロパティ

コンパクション・サブプロパティ デフォルト 説明
base_time_seconds 3600(1時間) 最初の時間枠のサイズ。
enabled true バックグラウンド・コンパクションを有効にします。「バックグラウンド・コンパクションを有効および無効にする」を参照してください。
max_sstable_age_days 365 指定された日数よりも古いデータのみを含むSSTablesのコンパクションを停止します。Cassandra 2.1.5以降では端数の日数を設定できます。
max_threshold 32 マイナー・コンパクションで許可するSSTableの最大数を設定します。
min_threshold 4 マイナー・コンパクションを発動するSSTableの最小数を設定します。
timestamp_resolution MICROSECONDS 挿入するデータのタイムスタンプ単位に応じてMICROSECONDSまたはMILLISECONDS
tombstone_compaction_interval 1 day SSTable作成後、トゥームストーン・コンパクション対象としてSSTableを考慮するまで待つ最小時間。トゥームストーン・コンパクションは、SSTableに、tombstone_thresholdよりも多くのガーベージ・コレクション対象にできるトゥームストーンがある場合に発動されるコンパクションです。
tombstone_threshold 0.2 ガーベージ・コレクションの対象にできるトゥームストーンと、含まれているすべてのカラムとの比率。SSTableがこれを超えた場合、トゥームストーンのパージを目的として、(他のSSTableなしで)コンパクションが発動されます。
unchecked_tombstone_compaction false trueの場合は、通常のトゥームストーン・コンパクションよりも積極的になります。成功の可能性をチェックしないで、SSTableトゥームストーン・コンパクションが1回実行されます。Cassandra 2.0.9以降。

LCS用CQLコンパクション・サブプロパティ

コンパクション・サブプロパティ デフォルト 説明
enabled true バックグラウンド・コンパクションを有効にします。以下の「cold_reads_to_omit」を参照してください。
sstable_size_in_mb 160MB レベル化コンパクション・ストラテジを使用するSSTableのターゲット・サイズ。SSTableのサイズは、sstable_size_in_mb以下である必要がありますが、コンパクション中にそれを超える場合があります。これは、パーティション・キーのデータが非常に大きい場合に発生します。データは2つのSSTableに分割されません。
tombstone_compaction_interval 1 day SSTable作成後、トゥームストーン・コンパクション対象としてSSTableを考慮するまで待つ最小時間。トゥームストーン・コンパクションは、SSTableに、tombstone_thresholdよりも多くのガーベージ・コレクション対象にできるトゥームストーンがある場合に発動されるコンパクションです。
tombstone_threshold 0.2 ガーベージ・コレクションの対象にできるトゥームストーンと、含まれているすべてのカラムとの比率。SSTableがこれを超えた場合、トゥームストーンのパージを目的として、(他のSSTableなしで)コンパクションが発動されます。
unchecked_tombstone_compaction false trueの場合は、通常のトゥームストーン・コンパクションよりも積極的になります。成功の可能性をチェックしないで、SSTableトゥームストーン・コンパクションが1回実行されます。Cassandra 2.0.9以降。

cold_reads_to_omit 

SizeTieredCompactionStrategyを使用して、無視されたSSTableが考慮する読み取り数/秒の最大パーセントを構成できます。値の推奨範囲は、0.0〜1.0です。Cassandra 2.1以降では、最も読み取り頻度の低い5%のSSTableを無視します。Cassandra 2.0.3以降では、デフォルトのcold_reads_to_omitが(0.0)で、すべてのSSTableがコンパクションされます。

cold_reads_to_omitプロパティ値を大きくしてテーブルごとにパフォーマンスを調整できます。値が1.0の場合、コンパクションは完全に無効になります。「Optimizations around Cold SSTables」ブログには、コールドSSTableのコンパクションを回避するためにこのプロパティを使用してパフォーマンスを調整する方法が詳しく記載されています。cold_reads_to_omitを構成するには、ALTER TABLEコマンドを使用します。

バックグラウンド・コンパクションを有効および無効にする 

次の例ではenableプロパティを使用してバックグラウンド・コンパクションを無効にします。
ALTER TABLE mytable WITH COMPACTION = {'class':'SizeTieredCompactionStrategy', 'enabled':'false'}

バックグラウンド・コンパクションを無効にすると悪影響が及ぶことがあります。ディスク領域が回復されないため、新しいデータとしてデータを再度書き込むトゥームストーン、つまりゾンビが発生する可能性があるためです。ほとんどの場合、コンパクションはI/Oを使用しますが、これは無効にするよりも有効のままにしておくことを推奨します。