FIND SHORTEST PATH 查询无path 数据慢

  • nebula 版本:nebulagraph2.5.1
  • 部署方式:分布式 / 单机
  • 安装方式:源码编译 / Docker / RPM
  • 是否为线上版本:Y / N
  • 硬件信息
    • 500G SSD 磁盘( 推荐使用 SSD)
    • CPU 16核、32G内存信息
  • 问题的具体描述
  • 相关的 meta / storage / graph info 日志信息(尽量使用文本形式方便检索)
    】FIND SHORTEST PATH FROM vid1 TO vid2 OVER {edge_list}这个命令,如果vid1与vid2之间不存在PATH时,耗时较高(1000ms+)
    这两个实体之间不存在路径,PROFILE查看时蓝色块耗时较高

    若查看存在PATH的两个实体的执行计划时,GetNeighbors算子不会有上图蓝色块

    情况是FIND SHORTEST PATH命令查找不存在的数据的情况下,会去多查询一次(蓝色块执行计划、该次耗时较高)。
    类似于该命令先去从库查数据,没查到再去主库查询数据(耗时较高);而能在从库找到数据的话就直接返回了。能帮忙看看Nebula有类似于这种查询策略的配置嘛?

目前没有这种配置,shortest path 采用的是双向BFS算法,可以考虑以下两种情况
1、 a和b 两点之间 没有路径,或者在用户指定的长度下 没有路径, 但是a和b两点都有其他边可以拓展出去, 这时需要拓展到用户指定长度时才会停止
2、a和b之间没有路径,并且拓展的时候没有边再去拓展,这时候会提前中止(已经在最新的master分支上有了这个功能)

3、针对nebula目前的 存储格式,不适合先使用 DFS方式 查找a和b是否联通,然后再使用BFS查找所有的路径

1 个赞

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