ttl
は24時間または1日です。私たちは4 cassandra 3.0 node cluster
を持っていて、このテーブルにはspark
の処理があります。処理されると、テーブル内のすべてのデータが切り捨てられ、新しいデータバッチが挿入されます。これは継続的なプロセスになります。カサンドラで頻繁に切り詰められ、24時間ttlで大きな墓石が作成されます
問題の処理が終了した後、毎日データが頻繁に切り捨てられるため、私たちはさらにtombstones
を取得しています。
gc_grace_seconds
をデフォルトに設定すると、tombstones
となります。 gc_grace_seconds
を1日に減らすと問題になりますか?私がそのテーブルで修理をしても、毎日それで十分でしょう。
私はこの問題にどのようにアプローチすればよいですか?頻繁に削除されるのは反パターンですCassandra
で、この問題を解決する方法はありますか?
TABLE b.stag (
xxxid bigint PRIMARY KEY,
xxxx smallint,
xx smallint,
xxr int,
xxx text,
xxx smallint,
exxxxx smallint,
xxxxxx tinyint,
xxxx text,
xxxx int,
xxxx text,
xxxxx text,
xxxxx timestamp
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCom pactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandr a.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 86400
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
テーブルのTRUNCATEは墓石を呼び出すべきではありませんあなた
トランケート操作は、ALLまたはクォーラムの整合性レベルで使用する必要がありますか?ドキュメントごとに、どれが良いですか?レプリカノードがダウンしている場合はALLが失敗しますが、処理中は切り捨て操作を続行します。切り詰め操作のためにクォーラムを使用することの問題。 –
あなたはトランケートで一貫性レベルを使用する必要はありません.DDL操作として通常の書き込みパスに従わないので、ゴシップですべてのノードに伝播します。 – markc
私はトランケートテーブルを使用しました。コマンドは4ノードクラスタ(1ノードダウン)からのTruncateError:<サーバからのエラー:コード= 1003 [切り捨て中のエラー]メッセージ= "切り詰め中のエラー:整合性レベルALLを達成できません"というエラーが発生しました。それは1つです。したがって、truncate操作ではデフォルトでALLですか?ノードがダウンしていてもトランケートが成功する方法はありますか?解析プロセスの一環としてテーブルを連続的に切り捨てる必要があります。ノードがダウンしていると、すべてのプロセスに影響する可能性があります。 –