ArangoDB中Graph Traversal的性能问题

时间:2014-08-21 16:45:52

标签: graph arangodb

我已经设置了一个简单的测试用例来最终学习一些图形数据库

我有一个简单的树结构,基于大约80000个顶点/文档的集合,每个都有大约25个属性。唯一的边缘是出境" is_parent"边缘,所以为了找到每个节点的子节点,我可以简单地拾取所有入站边缘。我没有在任何领域设置任何具体的指数。 树有20层深,我在第五层抓取一个随机节点,然后使用图遍历获取该节点的所有后代:

FOR t IN GRAPH_TRAVERSAL("sample_tree", "sampleunit/2565130142666", "inbound",  {"maxDepth":20}) RETURN t'

我的开发机器需要3秒多一点时间,我觉得我可能做错了什么。有什么方法可以加快速度,还是有任何概念上的问题?

2 个答案:

答案 0 :(得分:4)

我按照你的描述设置了一个类似于树的示例图,并在其上运行查询。

有趣的是,以下查询的执行速度比查询快得多:

FOR t IN TRAVERSAL(sampleunit, unitlinks, "sampleunit/2565130142666", "inbound",  {"maxDepth":20}) RETURN t

上面的查询使用"较旧的" AQL中的遍历函数。我们检查了两种遍历类型之间存在性能差异的原因,最后找到了可以改进的东西。

对此的修复已被推入2.2和devel分支。它包含在提交9a1eb149aa4da514d709c43a4ebdfd8819ba2f1d中,如果您更喜欢樱桃采摘。

答案 1 :(得分:1)

我在版本2.6.3上看到NEIGHBORS和GRAPH_NEIGHBORS之间的类似问题,第一个比第二个快30倍。