关于3.1.0版本TTL过期后点不会过期且占用磁盘空间的问题
- nebula 版本:3.1.0
- 部署方式: 单机
- 安装方式:源码编译
- 是否为线上版本:Y
- 硬件信息
- 磁盘 SSD 5T
- CPU 64核
- 内存 503GB
- 问题的具体描述
点数据在TTL之后不会删除,会留下一个不含Tag的空点,即使完成手动Compaction之后,空点仍然存在且占用空间。
根据文档描述,TTL
如果一个点仅有一个 Tag,点上的一个属性过期,点也会过期。然而实测与文档描述不符。
复现如下:
1.添加点
2.点过期仍能查到空点
使用scan方式也能扫描到
3.执行compact之后
仍然能查到空点
但是使用扫描查不到了
感觉这一块的逻辑挺奇怪的。留下过期空点,也会占用磁盘空间。实测260亿个过期点,压缩之后占用空间约150GB。想问下这一块有没有什么后续方案和计划,之后的版本更新,这些过期点会怎么处理
spw
3
创建该 tag 时的 schema 能给下吗?包括:
- ttl 是哪个字段?duration 是多少?
- 索引是建立在这个 tag 哪个字段上的?
这个是在本地复现的,只有一条数据,其实fetch也会有一样的效果
核心的问题是 3.0 我们允许有没有任何 tag 的 vertex key。
这部分 key 不会随 ttl 被删除,只能手动删。
@MuYi
2 个赞
CREATE SPACE tl (partition_num=20, replica_factor=1, vid_type=FIXED_STRING(30));
CREATE TAG IF NOT EXISTS kv_wrapper(value string not null, update_time timestamp) TTL_DURATION = 10, TTL_COL = “update_time”;
复现问题的时候TTL_DURATION设置的非常小,线上的TTL设置为7天
想问下大概的计划,之后版本中,过期的无tag key会删除吗,大概哪个版本会修改这一块?
steam
11
https://github.com/vesoft-inc/nebula/pull/4629
从 v3.3 开始不再支持无 tag 的点(上面 pr),相对应的这个 ttl 问题也就变相解决了。