2017-04-04 3 views
0

J'ai un problème d'évolutivité de ma requête Neo4j. Je suis en train de remplir une base de données avec ces requêtes:Neo4j mémoire insuffisante pour la requête CREATE - essayez d'augmenter l'exception '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) 
… 

Ces requêtes sont générées par un script que je l'ai écrit. La base de données a été créée avec succès pour 10 visiteurs et 100 visiteurs. Mais quand je suis en train de créer 1000 visiteurs (50 points de contrôle et environ 6000 visites), la base de données lance et exception:

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

Je pense que le problème est lié à ma requête. Des idées pour l'améliorer?

Je serai très reconnaissant pour votre aide!

Répondre

1

Ce que vous voulez faire est d'utiliser des paramètres dans la requête. Je ne sais pas comment vous chargez vos données, mais un exemple général ressemblerait à ceci.

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

espérons que cette aide

+0

Merci! Je vais certainement regarder ça! – zavanton