版本 nebula-1.0.0
未执行SUBMIT JOB COMPACTt前:
执行SUBMIT JOB COMPACT后:
count数量变少了,这是什么原因呢?
您好,有些无效数据是通过compact来删除的,有兴趣的话可以看下代码,这里有具体的数据清理逻辑:
src/storage/CompactionFilter.h
首先谢谢您的回复
但是按理来说点或边不应该是无效数据。如果点或者边是无效数据,一开始也不应该包括在统计中。
假设我导入100个点,然后compact后统计只有98个点,这种情况感觉有点说不过去。
有些数据是定时清理的,例如有TTL属性的数据、schema已经被删除的数据、Key version无效了的数据等。
也许下边的例子能为你解惑:
INSERT VERTEX tag1(col1) VALUES 1:(1);
INSERT VERTEX tag1(col1) VALUES 1:(2);
compact 前db_dump会返回2,compact 后会返回 1,其原因是compact把老version的 “INSERT VERTEX tag1(col1) VALUES 1:(1);” 清理掉了。
CREATE TAG tag1(row_timestamp timestamp) ttl_duration = 100, ttl_col = “row_timestamp”";
INSERT VERTEX tag1(row_timestamp) VALUES 1:(now());
当超过这个“ttl_duration = 100”时间后,compact后这一行数据会被删除。
例子2我理解
针对例子1,我刚才做了测试
首先把disable_auto_compactions设为true
创建一个空间,然后insert vertex tag1(col1) values 1:(“name1”); insert vertex tag1 values 1:(“name2”), 然后compact前db_dump 返回1。
如果我不进行compact,并且disable_auto_compactions设为true。然后我刚才测试删除一个vertex,然后db_dump还是返回1。然后我把disable_auto_compactions设为false, 在文档中说disable_auto_compactions修改为false后立即生效是指统计得时候不会把已经删除得点给统计在内吗?
经过测试显示当disable_auto_compactions设为false,需要过一段时间才不会把已经删除得点统计在内。
确实,我试验的结论和你一样,可能是我记错了,稍后找到原因后再答复你,很抱歉。。。
您好,您的测试结果是正确的,因为storaged中有个默认配置参数 “FLAGS_enable_multi_versions”,此参数默认值为false,意味之不支持多version的vertex,version默认是0,所以在插入相同的数据时,后入的会覆盖先入的,数据库里永远只有一条数据。
尝试 SUBMIT JOB FLUSH; 呢?
我在测试环境执行SUBMIT JOB FLUSH, 然后SHOW JOBS 显示failed,并且我在日志中没找到执行该命令的错误日志信息,是不是我的使用姿势有问题?