2016-04-08 3 views
1

私は大規模なグラフ(500million +ノード)に関係の変化番号を挿入するためのNeo4jのBatchInserterを使用していのNeo4j BatchInserter遅いシャットダウン

それは毎分関係の多くの千年代を挿入する、非常に高速です。

シャットダウンは非常に遅く、少数のリレーションシップが挿入されていても1時間以上かかっています。

org.neo4j.unsafe.batchinsert.BatchInserterImpl.shutdown()の内側に見て、私がいることを、私はそう長く取っているシャットダウンのどの部分かわからないが、私は事実を知っていればrepopulateAllIndexes()

含めて、それがない操作の数があることがわかり新しい関係はどのインデックスにも影響しません。BatchInserterImplをサブクラス化し、これらのシャットダウン操作をスキップするのに価値がありますか?

+1

この段階では、ディスクへのフラッシングがたくさんあります。プロセス(たとえばYourKit)にプロファイラを添付して、実際に時間が費やされている場所を確認することをおすすめします。 –

答えて

0

右のように、影響を受けたインデックスの再構築のみを考慮して、シャットダウンプロセスを最適化するために、BatchInserterは長続きしません。これを制御する1つのブール値があります。これは、ノード上のラベルが変更されたかどうかだけです。そうであれば、インデックスの完全な再構築(1回のストアスキャンのオフ)がトリガされる。あなたが言及しているように、これはおそらく改善することができます。

関連する問題