【问题标题】:Performance issue with Graph Traversal in ArangoDBArangoDB 中图遍历的性能问题
【发布时间】:2015-07-31 17:56:15
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: graph arangodb


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多