Cassandra表没有删除行的逻辑删除

时间:2015-03-31 10:45:38

标签: cassandra cassandra-2.0

我是一张简单的emp表:

CREATE TABLE emp (
  empid int,
  deptid int,
  first_name text,
  last_name text,
  PRIMARY KEY (empid, deptid)
) WITH ...

我插入了10条记录。然后删除了1条记录,并检查了json的表格。这就像是:

...
{"key": "0000000a","columns": [["1003:","",1427796440909000], ["1003:first_name","fn10",1427796440909000], ["1003:last_name","ln10",1427796440909000]]},
{"key": "00000001","metadata": {"deletionInfo": {"markedForDeleteAt":1427797012545000,"localDeletionTime":1427797012}},"columns": []},
{"key": "00000008","columns": [["1001:","",1427796419431000], ["1001:first_name","fn8",1427796419431000], ["1001:last_name","ln8",1427796419431000]]},
...

因此,1条记录被正确标记为删除。 接下来,我删除了表格中的所有记录,而select * from emp并未在cqlsh提示符下返回任何内容。

但是,当我检查表的json时,我得到与删除1个记录后相同的输出。这是一个开发环境,整个数据都是1 sstable

为什么其他已删除记录的逻辑删除没有反映在表的json输出中?

1 个答案:

答案 0 :(得分:2)

它在与sstables合并的记忆中。在sstable2json之前做一个nodetool flush来查看当前在memtable&提交日志。