2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Cassandra】Compaction

Last updated at Posted at 2019-10-22

Compactionの目的

SSTable統合による読み取りオーバヘッドの削減

 SSTableはmemtableの(定期的なflushによる)ダンプという形で作成されるため、経時とともに多くのファイルが作成されることになり、よって、読み取りクエリは複数のSSTableを読み取る形となり、オーバヘッドが発生する。このオーバヘッドの削減のため、SSTableファイルをソートマージする。

不要データの物理削除

 Cassandraは更新処理や削除処理で元のデータの置換えを行わないことで、更新/削除処理時のI/Oオーバヘッドを軽減しているが、無駄なディスク容量が発生したままになる。このため、SSTableファイルをソートマージして、重複/期限切れデータを削除する。
※逆にいうと、物理的なレコード削除はCompactionのタイミングでしか行われない。

Compactionプロセス

発動タイミング

・発動タイミングは以下
 ・テーブルごとに定義したCompaction Strategyに基づく、バックグランド自動起動
 ・管理者によるnodetool compactコマンド実行
 ・SSTableの変換(nodetool upgradesstables等)、rebuild(nodetool rebuild)
 ・incremental repairに伴うCompaction

実行プロセス

・各SSTableのデータをマージ、tombstoneを排除して、SSTableを1つの新しいSSTableファイルに統合
 ・tombstoneの削除は、そのtombstoneの猶予秒( gc_grace_seconds )が終了している場合のみ実行        
  ※猶予秒( gc_grace_seconds )のデフォルト: 864,000秒=10日間
   ( データのゴースト化復活回避のために、すべての廃棄( tombstone )がrepairで正常伝播される必要あり )  
・古いSSTableファイルは、マージ完了後、継続中の読み取りによるファイルの使用が終了を待って削除

処理結果の確認

・system.logあるいはdebug.logに出力されるCompactionExecutorのログ出力で確認可能
 ・Compacting ~
  Compaction処理対象のSSTableを確認可能
 ・Compacted ~
  Compaction処理結果を確認可能
  ・Compacted ~ sstables to ... [SSTableをマージした数]
  ・~ bytes to ~ [前後のデータサイズ]
  ・~ total partitions merged to ~ [前後のパーティション数]
  ・{1:~, 2:~,} 何個のSSTableからいくつパーティションをマージしたか
   例えば、「2:46」は、46パーティションを2つのSSTableからマージしたことを示す

Compactionの留意点

・Compaction処理時、新旧のSSTableが共存するため、ディスク領域の使用量が一時的に増加
・Compaction処理時、ディスクI/O、CPU使用が増加

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?