创建关系边时,neo4j导入50k数据集的数据很慢

时间:2018-02-16 21:26:08

标签: neo4j

enter image description here我有一个分层数据集节点,如附带问题的图像所示。 R1具有特定ID,R11,R12,R22,R21具有特定ID。但是节点All R2和All R1都没有虚拟ID。现在我有一个存储层次结构详细信息的csv文件。我试图导入数据并创建包含近50k条目的树。但是,它很慢。以下是我用来创建的查询:

using periodic commit LOAD CSV WITH HEADERS FROM "file:///file.csv" AS row 
match (rTemp:Resource) where rTemp.id = toInteger(row.resourceSubid) 
match (r:Resource) where r.id = toInteger(row.resourceId)
merge (r)-[:has]->(allR) 
merge (allR)-[:has]-> (rTemp)
return r;

创建此层次结构所需的时间太慢。怎么过来这个? 注意:我已经创建了R1并将其分别附加到所有R1 / R2节点。

1 个答案:

答案 0 :(得分:0)

如果您查询或解析查询,您会注意到查询计划中有一个Eager操作。

此外,如果您将查询粘贴到浏览器的查询文本框中,您会发现一条警告:

  

此查询的执行计划包含Eager运算符,该运算符强制所有相关数据在继续执行之前在主内存中实现

     

在执行计划包含Eager运算符的查询中使用带有大数据集的LOAD CSV可能会消耗大量内存,并且可能无法正常运行。有关如何避免问题的更多信息和提示,请参阅Eager运算符上的Neo4j手册条目。

allR是否必要?如果删除使用此变量并仅使用merge (r)-[:has]->(rTemp),则急切消失,定期提交将开始工作。

此外,是否有必要在查询结束时return r