Match匹配变长路径查询性能调优

  • 机器配置

    • 机器数:单机 Centos7.9
    • 磁盘类型:HDD
    • CPU 核数:8vCPU
    • 内存大小:32G
  • NebulaGraph 版本号:3.6.0

  • 服务状态,使用 show hosts 语句

  • 图空间 schema

  • 查询语句

# 以下查询需要11s,请问是哪个环节除了问题
MATCH p=(v:tag1)-[*0..2]-(v2)
WHERE id(v) IN ['tag1/550339168914574252','tag1/-3426714915882822219','tag1/6756087129326358141','tag1/1084915696346710640','tag1/-7687016934790192530','tag1/6322462751022149206','tag1/1819635008214071226','tag1/-8831673872872676976','tag1/-77946292108518594','tag1/-9040903008627379608','tag1/3197654310947872818','tag1/8135851344274001320','tag1/-6398658252428847926','tag1/6249277039054314562','tag1/7704904247561757991','tag1/3716226174696071859','tag1/8211309054618244500','tag1/2588324207231504511','tag1/5900526530628789128','tag1/1224385543585527010','tag1/-8311096920764404570','tag1/2864645268828937043','tag1/4802497143784950900','tag1/7994040112110432302','tag1/-6304560340520463083','tag1/4092804015387976084','tag1/-4997557939473162068','tag1/-2527879600966706915','tag1/3505185259523669863','tag1/-4034683698962258464','tag1/5758350838824743164','tag1/356584075273894335','tag1/1989856715218613475','tag1/6038204624430294276','tag1/-3794607844049355609','tag1/5342415084740698842','tag1/-16308086387942495','tag1/-4786668341749693488','tag1/-7223273800972904794','tag1/1603116561672009653','tag1/-8977995376581656067','tag1/2608711053257516044','tag1/-2789160963468992114','tag1/3539282080497726779','tag1/5197069917620414674','tag1/7769437789780375639','tag1/-5762443751493861781','tag1/1675692084768921300','tag1/7505220002981621117','tag1/1763685381012859216','tag1/-3654277290644565508','tag1/-1638026703337367963','tag1/8171562484095816499']
RETURN p
LIMIT 200;

  • 数据量
8个Tag:4万左右实体
50个EdgeType:30万左右边

你 id(v) in xxx 是因为有多 tag 吗?
如果是的话,在 match 上直接就可以用:隔开就行,如
MATCH (v:player:actor) RETURN v;

另外,你边的方向可不可以加上?不过这个和业务相关了

1,id(v) in xxx,xxx有一个tag的场景,也有多个tag的场景。
2,方向,业务上也有不需要做区分的场景。
这种GQL,还有哪些优化的思路?

  1. 你的 vid 和 part 分别是多少;
  2. 你可以把 limit 200 去掉,改成 return count(p),看总量有多大,有可能遇到超级节点导致数据量很多,这时候可以考虑截断;
  3. 可以profile 下,看慢在哪。HDD 的话,可能不能指望太快

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