FIND ALL PATH 性能问题

  • nebula 版本:3.1.0
  • 部署方式:分布式
  • 安装方式:Docker
  • 是否为线上版本:Y
  • 硬件信息
    • 磁盘( 推荐使用 SSD)
    • CPU、内存信息
  • 问题的具体描述

实际使用场景:已知一个客户id(记为 left_cid), 与若干个客户id(记为 right_cid_list),需要找寻这些客户id之间的关系
Step1: 根据 left_cid 找到 对应node的vid
Step2: 根据 right_cid_list 找到 对应node的vid
Step3: 组装FIND ALL PATH 语句,例如

FIND ALL PATH WITH PROP FROM '188124475023820091' TO '804989701678382569','180792379037514313'...(其他vid)
OVER `CUSTOM_HAS_ACCOUNT`
BIDIRECT
UPTO 5 STEPS
YIELD path as p | LIMIT 100

问题1: 在Step2 中,批量获取vid时,例如

MATCH (n:`CUSTOM`)  WHERE n.CUSTOM.customer_id in ['157012637001652684',...] RETURN id(n)

这个语句执行起来有明显卡顿,这里的vid查找实现有什么建议吗?

问题2: FIND ALL PATH 本身的语句执行方面有什么优化建议的方向吗?

问题1.可以考虑用lookup语句。
问题2.FIND ALL PATH可以尝试修改num_path_thread参数( 在nebula-graph.conf 文件中),控制执行线程的个数。如果要看进一步效果的话,可以把Profile打出来一起看下。

1 个赞

nebula-graph.conf 中 num_operator_threads 控制 find all path 线程并发的个数, num_path_thread 是控制 match allshortestPaths 中线程的个数的

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