0

我正在使用neo4j的社区版。我正在尝试使用CSV文件创建50000个节点和93400个关系。但是neo4j中的load csv命令需要大约40分钟来创建节点和关系。在 python 中使用 py2neo 包连接和运行密码查询。加载 csv 命令类似于以下命令:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///Sample.csv" AS row WITH row 
MERGE(animal:Animal { name:row.`ANIMAL_NAME`})
ON CREATE SET animal{name:row.`ANIMAL_NAME`,type:row.`TYPE`, status:row.`Status`, birth_date:row.`DATE`}
ON MATCH SET animal +={name:row.`ANIMAL_NAME`,type:row.`TYPE`,status:row.`Status`,birth_date:row.`DATE`}
MERGE (person:Person { name:row.`PERSON_NAME`})
ON CREATE SET person ={name:row.`PERSON_NAME` age:row.`AGE`, address:row.`Address`, birth_date:row.`PERSON_DATE`}
ON MATCH SET person += { name:row.`PERSON_NAME`, age:row.`AGE`, address:row.`Address`, birth_date:row.`PERSON_DATE`}
MERGE (person)-[:OWNS]->(animal);

Infrastructure Details: dbms.memory.heap.max_size=16384M

dbms.memory.heap.initial_size=2048M

dbms.memory.pagecache.size=512M

neo4j_version:3.3.9

我怎样才能让它更快地工作。在此先感谢

4

1 回答 1

0

理想情况下,您应该使用最新的 neo4j 版本,因为自 3.3.9 以来已经有许多性能改进。由于您已经在:Animal(name)and上有索引:Person(name),另一个主要问题可能是 Cypher 规划器正在为您的查询生成昂贵的Eager操作(至少在 neo4j 4.0.3 中)。每当你遇到性能问题时,你。应该使用EXPLAINPROFILE查看 Cypher 规划器生成的操作。

尝试使用这个更简单的查询(它应该和你的一样)。在 neo4j 4.0.3 中使用EXPLAIN,此查询不使用 Eager 操作:

:auto USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///Test.csv" AS row
MERGE(animal:Animal {name: row.`ANIMAL_NAME`})
SET animal += {type:row.`TYPE`, status:row.`Status`, birth_date:row.`DATE`}
MERGE (person:Person { name:row.`PERSON_NAME`})
SET person += {age:row.`AGE`, address:row.`Address`, birth_date:row.`PERSON_DATE`}
MERGE (person)-[:OWNS]->(animal);

:autoneo4j 4.x 中使用USING PERIODIC COMMIT.

于 2020-05-14T20:28:46.690 回答