gpt4 book ai didi

performance - 关系创建顺序会影响 Neo4j 中的查询性能吗?

转载 作者:行者123 更新时间:2023-12-04 03:08:43 25 4
gpt4 key购买 nike

我正在使用批量插入器创建一个包含大约 10 亿个节点和 100 亿个关系的数据库。我在多个地方读到,最好按 min(from, to) 的顺序对关系进行排序(我没有这样做),但我还没有理解为什么这种做法是最佳的。我本来以为这只是帮助插入速度,但是当我打开数据库时,遍历很慢。我意识到这可能有很多原因,尤其是对于这种大小的数据库,但我希望能够排除我存储关系的方式。

主要问题:以非常“随机”的顺序插入关系是否会降低遍历速度,因为它们将存储在磁盘上?我在想,也许当它试图遍历节点时,关系太分散了。我希望有人能启发我是否是这种情况。

更新:

  • 用例几乎是基本的 Neo4j friend 之友示例,通过 REST API 使用 Cypher 进行查询。

  • 每个节点(人)都是独一无二的,并且对于他们认识的人有一堆“认识”关系。虽然我有 10 亿个节点,但所有 100 亿个关系都来自大约 3000 万个节点。因此,对于我在查询中使用的任何起始节点,它平均有大约 330 个关系。

  • 在我的初始测试中,即使获得 4 个未排序的 friend 的 friend 结果也非常慢(平均超过 100 秒)。当然,在为每个查询预热缓存后,速度相当快,但图形非常随机,我无法将整个关系存储在内存中。

我的一些系统详细信息,如果需要的话:- Neo4j 1.9.RC1- 在Linux服务器上运行,128GB RAM,8核机器,非SSD HD

最佳答案

我还没有在这么大的范围内使用 Neo4J,但据我所知,这不会对速度产生太大影响。您能否提供任何说明插入顺序的链接。

在这种情况下,是否缓存关系很重要。在缓存被相当填充之前,性能会变慢。您还应该设置 an appropriate cache size一旦创建索引。

你应该阅读 this link on regarding neo4j performance .

阅读the neo4j documentation on batch insertthese SO questions如果您还没有阅读它们,请寻求有关批量插入的帮助。

关于performance - 关系创建顺序会影响 Neo4j 中的查询性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com