1

Cassandra圧縮のチューニングに関するDatastaxページの次の行については、少し不明です。具体的には、次のように言及しています。

「管理者は、すべての SSTable を 1 つにマージする nodetool compact を使用してメジャー コンパクションを開始することもできます。メジャー コンパクションは蓄積された SSTable によって使用されていたディスク スペースを解放できますが、実行時に一時的にディスク スペースの使用量を 2 倍にし、I/O と CPU を集中的に使用します。また、一度メジャー コンパクションを実行すると、自動マイナー コンパクションが頻繁にトリガーされることがなくなり、定期的に手動でメジャー コンパクションを実行する必要が生じます. そのため、メジャー コンパクションの直後は読み取りパフォーマンスが良好ですが、次のメジャー コンパクションが実行されるまでは継続的に低下します.このため、DataStaxではメジャー圧縮は推奨されていません。」( http://www.datastax.com/docs/1.0/operations/tuning )

これを読んだ後、私がよりよく理解しようとしている私の頭に浮かんだ2つの質問は次のとおりです。

  1. 手動でトリガーされたメジャー圧縮によって、マイナー圧縮の間隔/頻度が変更されるのはなぜですか? この背後にある根本的な理由に従うかどうかはよくわかりません。
  2. nodetoolを使用してメジャー圧縮を手動で実行する必要がある場合、それは可能ですか?また、可能であれば、結果としてマイナー圧縮間隔が影響を受けず、デフォルトの動作にリセットされるように戻すにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1

メジャー コンパクションが実行されると、すべての SSTable が 1 つの SSTable にマージされます。ほとんどの場合、新しく作成された SSTable は、Memtable (memtable_total_space_in_mb で定義) からフラッシュされる次の SSTable よりも大幅に大きくなります。サイズ階層化コンパクションを使用している場合、cassandra は、次のマイナー コンパクションをトリガーする前に、同じサイズの 4 つの (これもデフォルト) SSTable を待機します。これにより、メジャー コンパクションによって作成された Cassandra SStable が他の SSTable (memtable_total_space_in_mb) と一致しないため、次の自動マイナー コンパクションが遅延します。そのため、Cassandra は必ずしも自動マイナー圧縮を停止するわけではありませんが、頻度は変更されています。

「それは可能ですか?可能であれば、結果としてマイナー圧縮間隔が影響を受けず、デフォルトの動作にリセットされるように戻すにはどうすればよいですか?」- このためには、主要な圧縮の結果として作成された大きな sstable を分割する必要があります。これを行うには、'sstablesplit' というユーティリティを使用できます。

https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsSSTableSplit.html

于 2016-07-10T04:38:06.780 に答える