2014-03-24 3 views
1

노드가 100,000 개 이상인 neo4j 그래프가 있습니다. REST를 통해 다음 사이퍼 쿼리를 사용할 때 Java 힙 오류가 발생합니다. 쿼리는 일련의 구매에서 2 개 항목 집합을 생성합니다.Neo4J : Java 힙 공간 오류 : 100 k 노드

MATCH (a)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN a.id,c.id 

노드 유형 (1)의 두 종류의 외적 (a, c) 및 타입 2 (b) * 20K

는 동일한 목적을 위해 더욱 최적화 된 질의가인가 순서 80K이다? 나는 여전히 사이퍼에 초보자입니다. (내가 사용할 수있는 모든 Type1 및 Type2 노드에 각각 두 개의 인덱스가 있습니다.) 아니면 Java 힙 크기를 늘려야합니까?

저는 REST 쿼리에 py2neo를 사용하고 있습니다.

감사합니다.

답변

0

크로스 제품이 80k * 20k라고 했으므로 아마 모든 것을 와이어를 통해 끌어 당깁니까? 아마도 당신이 원하는 것은 아닙니다. 일반적으로 이러한 쿼리는 시작 사용자 또는 시작 제품으로 바인딩됩니다.

당신은 neo4j 쉘에서이 쿼리를 실행하려고 할 수 있습니다 당신은 노드의 레이블이있는 경우

MATCH (a:Type1)<-[:BOUGHT]-(b)-[:BOUGHT]->(c) RETURN count(*) 

를 해당 라벨 Type1를 사용할 수 있습니까? 운전하기. 보고있는 경로의 수를 확인하십시오. 그러나 80k 번 20k는 16 억 경로입니다.

그리고 내가 사용하는 버전의 py2neo가 이미 스트리밍을 사용하고 있는지 확실하지 않습니다. py2neo (즉 cypherSession.createTransaction() API)와 함께 트랜잭션 끝점을 사용해보세요.