4

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

我有一个基于大约 80000 个顶点/文档的集合的简单树结构,每个顶点/文档大约有 25 个属性。唯一的边是出站“is_parent”边,所以要找到每个节点的子节点,我可以简单地拾取所有入站边。我没有在任何字段上设置任何特定索引。这棵树有 20 层深,我在第五层抓取一个随机节点,然后使用图遍历获取该节点的所有后代:

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

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

4

2 回答 2

4

我按照您的描述设置了一个示例树状图并在其上运行查询。

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

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

上面的查询使用 AQL 中的“旧”遍历函数。我们检查了为什么两种遍历类型之间存在性能差异,最终发现了可以改进的地方。

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

于 2014-08-22T15:46:29.517 回答
1

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

于 2015-07-31T09:56:15.247 回答