コンパクションの構成

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

手順

  1. ALTER TABLE文を使用して、テーブルを更新してコンパクション・ストラテジを設定します。
    ALTER TABLE users WITH
      compaction = { 'class' :  'LeveledCompactionStrategy'  }
  2. コンパクション・ストラテジのプロパティをSizeTieredCompactionStrategyに変更し、CQLのmin_threshold属性を使用して、コンパクションを発動する最少のSSTableの数を指定します。
    ALTER TABLE users
      WITH compaction =
      {'class' : 'SizeTieredCompactionStrategy', 'min_threshold' : 6 }

タスクの結果

コンパクション・メトリックを使用して、構成の結果を監視できます。「コンパクション・メトリクス」を参照してください。

次のタスク

DataStax Enterpriseは、コンパクションの拡張ロギングをサポートしています。このユーティリティは、テーブル構成の一部として構成されている必要があります。拡張コンパクション・ログは別ファイルに格納されます。詳細については、「拡張コンパクション・ロギングの有効化」を参照してください。