2017-06-23 10 views
1

私は約11Mの関係のために膨大なファイルを持っています。 クエリを実行すると:Match (n) detach delete n、それは終わりまで永遠にかかるようです。 私はいくつかの研究を行なったし、私は限界との関係と、そのクエリを使用してノードを削除する必要があることがわかった:まだNeo4jグラフの大きなデータを削除

MATCH (n) 
OPTIONAL MATCH (n)-[r]-() 
WITH r LIMIT 200000 
DELETE r 
RETURN count(r) as deletedCount 

を、と私はいくつかのパフォーマンスの比較をやっているように、それはにロジックを思えませんdows私は穴のグラフを削除するために削除時間の合計を合計します。 と変更すると、一度に削除する関係の制限値を変更するときに変更されます。 (もし私が2000人の関係をしていたら、一度に20000人の関係と同じではない)

どうすれば問題を解決できますか? 助けていただければ幸いです。

答えて

3

バッチ処理のお手伝いをするには、apoc.periodic.commitをご利用ください。あなたはサイファーを強化するためのクールな機能をたくさん持っているapoc pluginを使用する必要があります。

次のサイファークエリを使用できます。

call apoc.periodic.commit(" 
match (node) 
with node limit {limit} 
DETACH DELETE node 
RETURN count(*) 
",{limit:10000}) 

これは、どのノードがデータベースに存在しないと、この場合手段最初matchリターンヌルまでバッチでクエリを実行します。さまざまな制限設定で遊んで、何が最も効果的かを確認できます。これは

+0

ありがとう助け

希望、私は –

+0

私はtar.gzファイルをダウンロードして、プラグインforderに直接それを置くか、私はいくつかの設定をしなければならない必要があることを試みるだろうか? –

+0

あなたが使用しているNeo4jのバージョンに応じて適切なJARをダウンロードし、プラグイン/ディレクトリにコピーしてNeo4jを再起動してください –