lookup 利用索引进行统计导致 graphd 内存打爆

  • nebula 版本:3.0.2
  • 部署方式:分布式
  • 安装方式:tar
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • lookup 加了where 条件进行tag统计,把一台graphd内存打爆了 一台机器64g直接占满 61g
    统计tag量级是1.3亿 单台内存64g
    lookup on test where test.flag==true yield id(vertex)|yield count(*) as count;

lookup on test where test.flag==true yield 1|yield count(*) as count;
这条执行后,内存消耗到40g执行完了;那官方案例里面


这个不是要把所有id拉到一台graphd上面进行统计,这个能跑不

单纯为了统计可以用 SHOW STATS - NebulaGraph Database 手册

生产业务需要,有修改的tag在删除的时候 逻辑删除是修改flag==false,统计的时候就只能通过索引来过滤 掉 flag==false的节点;如果实在lookup where |count 不能使用,就只能放弃逻辑删除改为真删除,用show stats来实现了

profile 一下语句看看

谢了 我在社区看到 lookup 聚合下推是3.1.0 实现的,这种 lookup yield id(vertex)| yield count(*)
count 会下推么

抱歉,3.1.0描述有点问题,当时只做了存储层的,查询层未实现 :broken_heart:

这个后续有优化的打算么

你好,这个我觉得是应该优化的,建议可以提个issue,我们会根据优先级来排具体时间。
https://github.com/vesoft-inc/nebula/issues/new/choose
在实现之前,建议你可以用真删除+show stats

好的 谢谢

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。