2017-02-09 5 views

答えて

0

TTLを設定すると、時間が経過すると、cassandraはtombstoneでデータにマークを付けます。あなたが定期的に修復を実行しない場合は、巨大な墓石が生成され、それがカサンドラのパフォーマンスに影響を及ぼします

列の作成からの秒数は、TTL値を超えた後、TTLデータが期限切れになったとみなされ、結果に含まれています。有効期限が切れたデータは、読み取りパス上の次の読み取り時に廃棄マーク付きでマークされますが、最大gc_grace_secondsの間残ります。この時間の後、廃棄データは自動的に通常の圧縮の際に除去され、修理は

本当にgc_grace_seconds +固めた後に削除https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_expire_c.html

+0

この場合、墓石が大量に作成されていないことを確認しました - それに応じてgc_grace_secondsを減らすことで –

+0

"期限切れのデータは次の読み取り時に墓石でマークされます" - 次回の圧縮時にのみ墓石3.9で。また、期限切れのデータが圧縮時にgc_graceよりも古くなった場合、削除されたデータはまったく削除されず、まったく作成されません。 – nevsv

1
  1. Tobstonedデータを処理します。廃棄されたデータを含むテーブルが圧縮されていないと、このデータとスタックされ、パフォーマンスが低下します。

  2. gc_grace期間内に修復を実行しないと、死んだデータが再び生きることがあります。ここでは、この上のdatastax記事だ(そして、あなたはregulary修理を実行する必要がある理由):

https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_about_deletes_c.html

EDIT:

がTTLedデータが期限切れの時に廃棄が、唯一の時にされていませんコンパクションのプロセスがあります(少なくとも3.9)。墓石がない場合でも、期限切れのデータは表示されません。

したがって、ノードに問題があり、TTLedデータが圧縮で削除されていない場合は、次の圧縮時に破棄されるか、単純に削除されます。これによれば、データが決して削除されずに有効期限が切れていて、同じキーに対するowerwritesがないという事実により、データの一貫性のために修復を実行する必要はありません。

上記のすべてについて、間違いなくあなたが書き込みパスを使用して書かれたことがあった場合に、私はしばらくのうちに(間にはるかに高い間隔で)修理を実行することをお勧めします。

+0

私は修理が墓石を取り除いたとは思わない。唯一の圧縮はしません。削除されたデータは、ダウンしたノードが復旧したときにのみ表示されます。しかし、私は手動の削除をしない場合、ノードはTTLに基づいてデータ自体を削除しませんか? –

+0

はい、修理で墓石が取り除かれません。自分の説明はしていませんでした。編集した回答を確認してください。 – nevsv

+0

ありがとう@ nevsv。より高い間隔を定義できますか?数日か数週間かかるのでしょうか? –

関連する問題