优化遍历和查找连接组件的gremlin查询

我试图在一个图中找到一个连接组件中的所有节点,其中包含大约 130M 个顶点和大约 350M 条边。

以下是我用来查找连接组件中节点数的查询 -

输入 - 起始顶点 id/name

输出 - 连接组件中的节点数。

查询 - malloc()

上述查询大约需要 52 秒

RepeatStep 大约需要 29 秒

有没有办法优化Repeatstep中的线性遍历或WherePredicateatep中的查找?

上述查询的配置文件输出-

g.v().has("name","driver1").repeat(where(without ("a")).store("a").both().simplePath().dedup()).emit().hasLabel("driver").count().fold()
panxinli8 回答:优化遍历和查找连接组件的gremlin查询

图查询的性能取决于需要触及的数据量以及索引可以提供的帮助量。配置文件结果中的遍历器计数显示接触了多少数据(本质上是查询的扇出)。如果您使用 JanusGraph,查询的 .profile() 将显示索引提供了多少帮助(或不提供)。如果您使用 Amazon Neptune,为 bothin 等步骤提供标签有助于查询引擎利用可用索引。在某些情况下,多线程查询并在应用程序中加入结果会有所帮助。就您而言,如果不知道数据的确切构成,就很难提供其他建议。

本文链接:https://www.f2er.com/52979.html

大家都在问