【发布时间】:2018-01-06 05:11:45
【问题描述】:
我使用 Cassandra 3.0.12。
我有一个 cassandra 列族,或具有以下架构的 CQL 表:
CREATE TABLE win30 (
cust_id text,
tid timeuuid,
info text,
PRIMARY KEY (cust_id , tid )
) WITH CLUSTERING ORDER BY (tid DESC)
and compaction = {'class': 'DateTieredCompactionStrategy', 'max_sstable_age_days': 31 };
alter table win30 with default_time_to_live = '2592000';
我已经为整个表设置了 default_time_to_live 属性,但是当我查询该表时,
select * from win30 order by tid desc limit 9999
卡桑德拉警告
Read xx live rows and xxxx tombstone for query xxxxxx (see tombstone_warn_threshold).
根据这个文档How is data deleted,
Cassandra 允许您设置 default_time_to_live 属性 整张桌子。处理标有常规 TTL 的列和行 如上所述;但是当一条记录超过表级TTL时, Cassandra 会立即将其删除,无需立碑或压缩。
“但是当一条记录超过表级别的 TTL 时,Cassandra 会立即将其删除,无需立碑或压缩。”
既然我设置了 default_time_to_live,为什么 Cassandra 仍然对墓碑发出警告?
我使用类似 CQL 的方式插入数据,而不使用 TTL。
insert into win30 (cust_id, tid, info ) values ('123', now(), 'sometext');
a similar question but it does not use default_time_to_live
看来我可以将 unchecked_tombstone_compaction 设置为 true?
另一个问题,我选择排序与聚类顺序相同的数据, 为什么卡桑德拉撞了这么多墓碑?
【问题讨论】:
标签: cql3 cassandra-3.0