我正在使用此密码查询在Neo4j中创建两个节点之间的关系
MATCH (first:FIRSTNODE)
with first
MATCH (second:SECONDNODE)
WHERE first.ID = second.ID
CREATE (first)-[:RELATION]->(second)
第一个有100.000个节点,第二个有1.100.000个节点。
我导入了csv文件,然后我创建了两个表的索引;但是当我尝试运行查询时,关系neo4j卡住并停止工作。 我注意到,当发生这种情况时,cpu使用率会达到100%。
我正在使用8x4.0Ghz的CPU和10Gb的RAM以及SSD。
你知道什么可以帮助我解决这个问题吗?
使用apoc.periodic.commit它有效。但是如果那时我会运行第二个这样的查询:
call apoc.periodic.commit("
MATCH (third:THIRDNODE)
WHERE NOT (third)-[:RELATION2]->()
WITH third LIMIT {limit}
MATCH (second:SECONDNODE)
WHERE third.ID = second.ID2
CREATE (third)-[:RELATION2]->(second)
RETURN count(*)
", {limit:10000})
再次陷入困境
答案 0 :(得分:3)
您可以尝试使用apoc.periodic.commit中的APOC Procedures。关于这个程序的文档说:
apoc.periodic.commit(statement,params) - 运行给定的语句 单独的交易,直到它返回0
安装APOC程序并尝试:
call apoc.periodic.commit("
MATCH (first:FIRSTNODE),
WHERE NOT (first)-[:RELATION]->()
WITH first LIMIT {limit}
MATCH (second:SECONDNODE)
WHERE first.ID = second.ID
CREATE (first)-[:RELATION]->(second)
RETURN count(*)
", {limit:10000})
请记住根据您使用的Neo4j版本安装APOC程序。请查看version compatibility matrix。