我是一张简单的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输出中?
答案 0 :(得分:2)
它在与sstables合并的记忆中。在sstable2json之前做一个nodetool flush
来查看当前在memtable&提交日志。