关于subgraph + limit

在实际业务场景中,某个节点的出边和入边数量都非常多(热门节点),假如我使用get subgraph 1 steps获取该节点的neighbors,无论是执行效率和结果集size都过大,导致不可用

有没有可能在subgraph traversal时支持设置每一跳的limit,确保在可控的时间内,返回一个size可控的subgraph

因为在某些实际业务场景中,热门节点的出边和入边数量不可控,get subgraph的查询存在潜在的失控风险,需要有workaround的方案保证查询可用

我通过 explain format = "row" get subgraph 1 steps from 100观察到,几次关键的GetNeighbors都是有limit参数的,但是没有办法设置

而假如我使用如下所示的操作

get subgraph 1 steps from "{VID}" | limit 100

实际上并不会影响GetNeighbors时的limit,查询依然会超时

1 个赞

感谢你的提问,subgraph这块现在是没有加这块优化,后续我们可以提供上。

好的,谢谢,顺便问一下有没有后续的发布计划(GA版本)?

计划是月底。

https://docs.nebula-graph.io/2.0/5.configurations-and-logs/1.configurations/4.storage-config/#for_super-large_vertices

您说的是对大点拓展的时候设置截断吧? Max_edge_returned_per_vertex 这个参数

多谢回复,我会试一下 :slightly_smiling_face:

2年过去了,现在有什么优化措施吗

subgraph在最新版本已经优化了

subgraph 使用了getNeighbor算子 获取点和对应的出边,但是把limit 推到subgraph中的getNeighbor算子中是什么行为 没有定义,所以目前没有把limit推到subgraph中