关于FIND NOLOOP PATH 的执行问题

  • nebula 版本:3.3.0
  • 部署方式:分布式,3个节点
  • 安装方式:RPM
  • 是否上生产环境:Y
  • 硬件信息
    • 磁盘: 每个节点200G SSD
    • CPU、内存信息:每个节点8C,64G内存

有个问题请教一下。我现在有个需求,执行路径查找,返回结果需要根据路径的长度来进行排序。
执行的具体语句如下:

FIND NOLOOP PATH FROM "451010000012000008930949" TO "451020000001000049787146" OVER pipeline bidirect UPTO 25 STEPS
yield path as p | 
yield $-.p as p, length($-.p) as len |
order by $-.len |
yield $-.p as p, $-.len as len |
limit 6;

执行结果,耗时很长,5min+。具体的profile信息,在上传的附件中。
result (1).csv (15.3 KB)

profile之后,发现耗时主要体现在ProduceAllPaths上。达到了295s+。

我的疑问是:
以上的查询中,在执行ProduceAllPaths的时候,是否没有考虑order by len 和 limit 6?能否只组合生成必要的路径,而不是所有的?

谢谢!

是的,findpath 只是找路径,没有考虑 limit 和orderby的信息。 后续对find path 的执行有优化,limit的信息会考虑进去

非常期待这项改进。请问,有具体的更新计划吗?

在当前的版本中,以上的查询是否有优化的空间?

语法层面上没有优化空间。 在3.5版本上会应用 path的优化

2 个赞

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