如何解决优化遍历和查找连接组件的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()
解决方法
图查询的性能取决于需要触及的数据量以及索引可以提供的帮助量。配置文件结果中的遍历器计数显示接触了多少数据(本质上是查询的扇出)。如果您使用 JanusGraph,查询的 .profile()
将显示索引提供了多少帮助(或不提供)。如果您使用 Amazon Neptune,为 both
和 in
等步骤提供标签有助于查询引擎利用可用索引。在某些情况下,多线程查询并在应用程序中加入结果会有所帮助。就您而言,如果不知道数据的确切构成,就很难提供其他建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。