我有一个拥有9832人的数据库,172,908所房子,并且必须添加456,219个关系以及其他属性。我使用以下查询执行此操作:
MATCH (p:Person { uid: { p_uid } }), (h:House { uid: { h_uid } })
MERGE (p)-[r:LIVES_IN]->(h)
ON MATCH SET r.housing_weight = {housing_weight}
ON CREATE SET r.housing_weight = {housing_weight}
成千上万的查询会在一秒钟内执行,但是每隔几千个查询就会花费更长的时间(5-60秒),因此执行速度会大大降低。
p_uid
和h_uid
上有索引,因此匹配不应成为问题。
我注意到执行缓慢的情况出现在连接到很多房屋的人身上。
我使用Neo4j 3.0.1企业版,并使用Java Driver 1.0.4执行cypher查询。 Neo4j日志并没有真正打印出任何信息。有没有办法找出有时执行速度缓慢的原因?或者有人已经有线索为什么会发生这种情况?