2017-04-04 158 views
0

我的Neo4j查询的可伸缩性存在问题。 我试图填充数据库与这些查询:Neo4j没有足够的内存用于CREATE查询 - 尝试增加'dbms.memory.heap.max_size'例外

CREATE (Visitor1: Visitor {MAC:'00:0a:95:9d:68:16'}) 
CREATE (Visitor2: Visitor {MAC:'a7:e1:29:0f:7b:42'}) 
… 

CREATE (CheckPoint1: CheckPoint {CheckPointId: 1}) 
CREATE (CheckPoint2: CheckPoint {CheckPointId: 2}) 
… 

CREATE (Visitor1)-[:MAKES]->(Visit1: Visit {EnterTime: 1491061320000})-[:TO]->(CheckPoint1) 
CREATE (Visitor1)-[:MAKES]->(Visit2: Visit {EnterTime: 1491061860000})-[:TO]->(CheckPoint46) 
… 

这些查询利用自己编写的脚本生成。该数据库已成功为10位访客和100位访客创建。但是,当我试图创建1000个访客(50点关口及6000访问),数据库抛出和异常:

There is not enough memory to perform the current task. Please try increasing ‘dbms.memory.heap.max_size’ in neo4j configuration. 

我认为这个问题是我的查询。任何想法如何改善?

我将非常感谢您的帮助!

回答

1

你想要做的是在查询中使用参数。不知道你如何加载你的数据,但一个通用的例子看起来像这样。

MERGE (Visitor1: Visitor {MAC:params.mac}) 
MERGE (CheckPoint1: CheckPoint {CheckPointId: params.checkpoint}) 
CREATE (Visitor1)-[:MAKES]->(Visit2: Visit {EnterTime: params.enterTime})-[:TO]->(CheckPoint1) 

希望这有助于

+0

谢谢!我一定会研究这个! – zavanton

相关问题