コンパクションの構成
DataStax Enterpriseでコンパクションを構成するための手順。コンパクション・プロセスは、キーをマージし、カラムを結合し、トゥームストーンを排除し、SSTableを統合し、マージされたSSTableに新しいインデックスを作成します。
「データはどのように維持されるか」で説明されているように、コンパクション・プロセスは、キーをマージし、カラムを結合し、トゥームストーンを排除し、SSTableを統合し、マージされたSSTableに新しいインデックスを作成します。
以下のグローバル・コンパクション・パラメータを cassandra.yamlファイルで構成します。
compaction_throughput_mb_per_sec
パラメーターは、大きいパーティションを対象として使用することを意図しています。データベースは、システム全体にわたってこのレートまでコンパクションをスロットルします。
DataStax Enterpriseには、プロダクション環境のワークロードに影響を及ぼさずにコンパクション・ストラテジのテストを行うための起動オプションがあります。
DataStax Enterpriseは以下のコンパクション・ストラテジをサポートしており、CQLを使用して構成できます。
LeveledCompactionStrategy(LCS)
:レベル化コンパクション・ストラテジでは、いくつかのレベルにグループ分けされる、固定の、比較的小さなサイズ(デフォルトでは160 MB)のSSTableが作成されます。各レベル内で、SSTableはオーバーラップしないことが保証されます。各レベル(L0、L1、L2など)は、1つ下のレベルの10倍のサイズです。SSTableは、継続的に、次第により大きなレベルへとコンパクションされていくため、レベルが低い場合よりもレベルが高い方が、ディスクI/Oが均等化され予測しやすくなります。レベルごとに、行キーはオーバーラップしない次のレベルのSSTableにマージされます。データベースが、各レベルのどのSSTableで行キー・データの有無を調べるかを特定できるため、読み取りのパフォーマンスが向上します。このコンパクション・ストラテジは、GoogleのLevelDB実装をモデルにしています。「LCSコンパクション・サブプロパティ」も参照してください。SizeTieredCompactionStrategy(STCS)
:デフォルトのコンパクション・ストラテジ。このストラテジは、ディスク上に、min_threshold
テーブル・サブプロパティで構成されているサイズに似たサイズのSSTableがいくつかあるときに、マイナー・コンパクションを発動します。マイナー・コンパクションでは、キースペースのすべてのテーブルが関与するわけではありません。「STCSコンパクション・サブプロパティ」も参照してください。TimeWindowCompactionStrategy(TWCS)
:このストラテジは、時系列データの代わりです。一連の時間枠を使用してSSTableをコンパクションします。時間枠では、TWCSによって、メモリーからフラッシュされたすべてのSSTableが、STCSを使用してより大きなSSTableにコンパクションされます。時間枠が終了すると、これらすべてのSSTableが1つのSSTableにコンパクションされます。次の時間枠が開始され、プロセスが繰り返されます。時間枠の時間のみ、設定する必要があります。「TWCSコンパクション・サブプロパティ」を参照してください。TWCSの詳細については、「データはどのように維持されるか」を参照してください。DateTieredCompactionStrategy(DTCS)
(廃止予定)。
コンパクション・ストラテジのプロパティおよびCQLのコンパクション・サブプロパティ(コンパクション対象にできるSSTableの最大数や最小のSSTableのサイズなど)を構成するには、CREATE TABLEまたはALTER TABLEを使用します。
cassandra.yaml
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra.yaml |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra.yaml |
手順
-
ALTER TABLE文を使用して、テーブルを更新してコンパクション・ストラテジを設定します。
ALTER TABLE users WITH compaction = { 'class' : 'LeveledCompactionStrategy' }
-
コンパクション・ストラテジのプロパティをSizeTieredCompactionStrategyに変更し、CQLのmin_threshold属性を使用して、コンパクションを発動する最少のSSTableの数を指定します。
ALTER TABLE users WITH compaction = {'class' : 'SizeTieredCompactionStrategy', 'min_threshold' : 6 }
タスクの結果
コンパクション・メトリックを使用して、構成の結果を監視できます。「コンパクション・メトリクス」を参照してください。