【问题标题】:Adding relationships using load csv in neo4j taking huge time在 Neo4j 中使用加载 csv 添加关系需要大量时间
【发布时间】:2016-07-06 18:39:23
【问题描述】:

我正在使用加载 csv 操作将关系加载到 Neo4j 中的图形数据库中。节点已经创建。我有四种不同类型的关系要从四个不同的 CSV 文件(文件 1 - 59 关系,文件 2 - 905 关系,文件 3 - 173,000 关系,文件 4 - 超过 100 万个关系)创建。密码查询执行得很好,但是文件 1(59 个关系)需要 25 秒才能执行,文件 2 需要 6.98 分钟,文件 3 自过去 2 小时以来仍在继续。考虑到 neo4j 处理数百万关系的能力,我不确定这些执行时间是否正常。下面给出了我正在使用的示例密码查询。

load csv with headers from
"file:/sample.csv"
as rels3
match (a:Index1 {Filename: rels3.Filename})
match (b:Index2 {Field_name: rels3.Field_name})
create (a)-[:relation1 {type: rels3.`relation1`}]->(b)
return a, b

'a' 和 'b' 是我为两个预加载的节点类别创建的两个索引,希望加快查找操作。

附加信息 - 节点数(一个类别) - 1791 节点数(b类) - 3341

有没有更快的方法来加载它并且加载 csv 操作需要这么多时间?我是不是哪里出错了?

【问题讨论】:

    标签: neo4j cypher load-csv


    【解决方案1】:

    Index1.FilenameIndex2.Field_name 上创建索引:

    CREATE INDEX ON :Index1(Filename);
    CREATE INDEX ON :Index2(Field_name);
    

    验证这些索引是否在线:

    :schema
    

    通过将PROFILE 添加到查询的开头并查看执行计划以查看是否正在使用索引来验证您的查询是否正在使用索引。

    更多信息here

    【讨论】:

    • 您好,William,我创建了索引并且它们在线。我现在将验证索引是否正在使用。
    • 是的,William,看起来索引没有被使用,因为它正在扫描数据库中的所有节点。
    【解决方案2】:

    在运行查询之前我喜欢做的是先运行explain,看看是否有任何警告。由于这些警告,我已经修复了许多查询。
    (简单地将explain 预先附加到您的查询中)

    另外,也许您可​​以删除 return 语句。查询完成后,您可以运行另一个以查看节点。

    我使用与您的查询非常相似的查询在大约 54 分钟内创建了大约 2000 万个关系。

    索引很重要,因为这就是 neo 查找节点的方式。

    【讨论】:

    • 你好阿尔伯特!您使用什么样的硬件在一小时内建立 2000 万条关系?我正在尝试运行超过 100,000 的查询,但它会在一段时间后挂起。我在具有 16 GB RAM 和 i5 四核处理器 (3.2 ghz) 的台式机上运行 Neo。
    • 它是 Intel Xenon E3-1220 4 核 @ 3.1Ghz,32GB RAM,1TB SSD。我注意到您的加载查询中有一个 return 语句,这不是必需的。看看删除它是否会加快速度。我不确定 Neo 是如何处理它的,但它可以将它需要返回的节点保留在内存中,从而快速消耗你的内存——但这只是猜测。加载后您可以随时查看数据。
    • 我发现查询实际上得到执行,但浏览器挂起。当我杀死页面并重新加载它时,我可以看到所有节点/关系都已成功创建。然后,当我编写一个像“match (n) return n limit 100,000”这样简单的查询时,浏览器再次挂起。该查询最多可用于 10,000 左右的限制,但一旦超过某个限制,浏览器就会挂起。
    • 我尝试删除 return 子句,但控制台返回错误说匹配必须有返回
    • 我使用 neo4j-shell 在屏幕会话中运行 LOAD CSV 查询(我已经运行了超过 12 小时才能完成的查询)。我在linux上。可以用壳吗?然后你可以使用浏览器来计算你加载的节点/关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多