相关疑难解决方法(0)

default_time_to_live如何删除Cassandra中没有逻辑删除的行?

如何删除数据?

Cassandra允许您为整个表设置default_time_to_live属性。标记有常规TTL的列和行如上所述进行处理;但是当记录超过表级TTL时,Cassandra会立即将其删除,而不会导致逻辑删除或压缩

这里也回答

如果表上具有default_time_to_live,则超过此时间限制的行将立即删除,而不会写入逻辑删除

并在LastPickle的帖子中有关删除和墓碑中进行了评论

探索的另一个线索是,如果合适的话,可以使用TTL作为默认值。在表级别使用'default_time_to_live'设置的TTL 在C * 3.0 +中根本不会产生任何逻辑删除。尚未经过我的测试,但我读到了这件事。

我已经做了我可以想象的最简单的测试LeveledCompactionStrategy

CREATE KEYSPACE IF NOT EXISTS temp WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'};

CREATE TABLE IF NOT EXISTS temp.test_ttl (
    key text,
    value text,
    PRIMARY KEY (key)
) WITH  compaction = { 'class': 'LeveledCompactionStrategy'}
  AND default_time_to_live = 180;
Run Code Online (Sandbox Code Playgroud)
  1. INSERT INTO temp.test_ttl (key,value) VALUES ('k1','v1');
  2. nodetool flush temp
  3. sstabledump mc-1-big-Data.db 在此处输入图片说明
  4. 等待180秒(default_time_to_live)
  5. sstabledump mc-1-big-Data.db 在此处输入图片说明 尚未创建墓碑
  6. nodetool compact temp
  7. sstabledump …

cassandra cassandra-3.0

4
推荐指数
1
解决办法
603
查看次数

标签 统计

cassandra ×1

cassandra-3.0 ×1