2013-03-12 11 views
5

いくつかのテストを行っていました。インデックスの有無にかかわらずパフォーマンスを挿入

Wesなどの素晴らしい提案に基づいて、私はマルチスレッド環境で大規模な挿入を行うためにキャッシュなしでいくつかのneo4jプロパティをチューニングしました。パフォーマンスは悪くありません。

しかし、(ノード上に)インデックスを導入すると、パフォーマンスが大幅に低下します。違いは簡単に5倍です。より良い設定になっていますか?事前に

おかげで、

サチン

のNeo4jのバージョン - 1.8.1。 JVM - 1.6

答えて

4

ノード(または関係)をLuceneインデックスに挿入するのはコストがかかります。 Luceneは強力ではあるが複雑なツールで、全文/キーワード検索用に設計されています。裸のデータベースと比較して、それはむしろ遅いです。

最も一括挿入ツールは、マイケルの一括挿入のように、非同期的にインデックス付けを行う理由は次のとおりです。

http://jexp.de/blog/2012/10/parallel-batch-inserter-with-neo4j/

一部でも取引を回避するか、直接店舗のファイルを書き込む:

http://blog.xebia.com/2012/11/13/combining-neo4j-and-hadoop-part-i/

パフォーマンスを向上させるには、SSDディスクを使用すると効果的です。しかし、Neo4jは完全なACIDトランザクションデータベースであり、Luceneインデックスはトランザクション(これは良いことです)と密接に結びついているため、あなたのインフラストラクチャを最適な書き込みパフォーマンスのために最適化する以外に他にはありません。いくつかのトランザクションの安全性を取引することにより

、書き込み性能(USV /バッテリバッファリングシステムまたはラップトップ上無視できる):この追加の答えはLinuxでext4ファイルシステム上でのNeo4jを実行している人のために、まだ使用である念の

+1

+1。私はストアファイルをC言語で直接書くためのプログラムに取り組んでいます。しかし、私は索引を最初に(あるいは多分)サポートするつもりはない - まだルーネファイル形式を見ていない。 OPは、ノードの後に​​、独自のバルク・トランザクションで索引を書き込むことを検討することがあります。 –

+0

うわー、面白いね。 Neo4jのトップパフォーマンスのレースが始まった! :) –

+0

これまでのところ、1Bノードは82秒で表示されます(プロパティもrelsも無用です!)。ほとんどがrelを持っています - relをするためにかなり多くの作業が必要です。 –

関連する問題