【发布时间】:2018-09-13 15:11:41
【问题描述】:
我在 Cassandra 的一个表中插入了 10K 个条目,该表在单个分区下的 TTL 为 1 分钟。
插入成功后,我尝试从单个分区中读取所有数据,但抛出如下错误,
WARN [ReadStage-2] 2018-04-04 11:39:44,833 ReadCommand.java:533 - Read 0 live rows and 100001 tombstone cells for query SELECT * FROM qcs.job LIMIT 100 (see tombstone_warn_threshold)
DEBUG [Native-Transport-Requests-1] 2018-04-04 11:39:44,834 ReadCallback.java:132 - Failed; received 0 of 1 responses
ERROR [ReadStage-2] 2018-04-04 11:39:44,836 StorageProxy.java:1906 - Scanned over 100001 tombstones during query 'SELECT * FROM qcs.job LIMIT 100' (last scanned row partion key was ((job), 2018-04-04 11:19+0530, 1, jobType1522820944168, jobId1522820944168)); query aborted
我知道墓碑是 sstable 中的一个标记,而不是实际的删除。
所以我使用 nodetool 进行了 compaction 和 repair
即使在那之后,当我从表中读取数据时,它也会在日志文件中引发相同的错误。
1) 如何处理这种情况?
2) 有人能解释一下为什么会发生这种情况吗?为什么压缩和修复没有解决这个问题?
【问题讨论】: