BatchInserter の使用中に致命的な速度低下が見られます。ヘルプまたは確認をいただければ幸いです (したがって、neo4J が実行可能なオプションであるかどうかがわかります)。
以下の構成データ。
基本的に、リンク プロジェクトでの Neo4J の使用を評価しています。消費者、住所、自宅、および郡の文書を含むファイルを用意しました。
サイズはそれぞれ200M~400M程度です。
うまく始まりました。
コンシューマーの負荷 216M インデックスなし - 2 つの Lucene インデックスで 5 秒あたり 1M 15 秒あたり 1M。
次のステップの速度低下が見られましたが、アドレス ファイル 170M (インデックスなし) の Address Load でのプロパティの数が 2 倍になったことが原因であると考えました - 15 秒あたり 1M です。
次のスローダウンは非常に明白で、データベースに BatchInserter を作成するのに 10 分かかりました。
関係に対処する消費者の負荷は 350M ~ 70 秒あたり 1M で、数時間のようにシャットダウン時間が徐々に遅くなります。
今、それはさらに悪化しています。150M 家 - 最初の 1M は 1000 秒かかりましたが、10M 後は 1M レコードで 100 秒に短縮されました (家には 3 つのプロパティしかありません)。
インデックスが含まれていない限り、基本的にエンティティをデータベースに追加するために速度が低下するのはなぜですか。他のデータベース実装では見られませんでした。手動で作成したインデックスが自動になった可能性はありますか?
BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider(inserter); BatchInserterIndex iNames = indexProvider.nodeIndex("Names", MapUtil.stringMap("type","exact")); ... for(String name : fullNames) { iNames.add(node,MapUtil.map("names",name)); } ... indexProvider.shutdown(); inserter.shutdown();
遅い関係の挿入で前のスレッドの設定を使用しました。マシンまたはプログラムで設定できるものは他にありますか。
私はJava、特にJvmの設定と環境にあまり精通していません。したがって、ランタイムに関しては、説明を穏やかにしてください。
サーバーは、Windows 2008
256 GB の RAM と 42 個の 2.8 コア (AMD) です。ドライブはエンタープライズ レベルではありませんが、十分に高速です。
Milestone 6 バージョン 2.0
の Neo4j およびバッチ ロードは Java で記述されています。JDK7
PS 関係ありませんが、なぜこれを Google グループ Neo4j に投稿できなかったのか、誰もが知っています。