2017-05-06 6 views
0

が問題でクエリがある:データベースののNeo4jノードの数を返すようにしようとする特定の説明を当てはめる

MATCH (node:Wallet) 
WHERE size((node)-[:SendTo]-()-[:SendTo]-())>0 or size(()-[:SendTo]-(node)-[:SendTo]-())>0 
RETURN count(node) 

サイズ12.5 GBです。ウォレットノードの数は、私は-Xmx28000m -Xms28000m -Xss9m のVM引数でのEclipse上のJavaでクエリを実行しようとした

100000を超える(Iもneo4j.confに対応する行を設定:

dbms.memory.heap.initial_size=28000m 
dbms.memory.heap.max_size=28000m 
dbms.jvm.additional=-Xss4m 

すぐにメモリ不足のエラーが発生します。タスクマネージャーは、対応するプログラムが約28 GBを使用していることを示しています。 (32ビットRAMを搭載した64ビットコンピュータです)

何か回避方法はありますか?

答えて

1

あなたの述語を少し改善することができます。これらのケースの1つでは、リレーションシップストア(展開を必要としない)を使用することができ、もう1つはexists()関数を使用できる可能性があります。

これを試してみてください。

MATCH (node:Wallet) 
WHERE size((node)-[:SendTo]-()) >= 2 or exists((node)-[:SendTo*2]-()) 
RETURN count(node) 
関連する問題