0

私は中規模の neo4j データベースを持っており、ノード数は約 700000 で、ノードごとに 1 ~ 5 の発信リレーションがあります。

インデックス属性でノードをクエリし、隣接するノードを見つけるためにブラウザー インターフェイスを使用すると、約 1500 ミリ秒かかりますが、これは私にとっては問題ありません。

MATCH (n {id_str : 'some_id'})-->(child) return child.id_str
...
Returned 2 rows in 1655 ms

しかし、Ruby Neography ライブラリを使用して関係に言及する同様の Cypher クエリを実行すると、完了するまでに数分かかりました。

lookup_links = "MATCH (n {id_str : {id_str}})-[:internal_link]->(child) return child.id_str"
links = @neo.execute_query(lookup_links, :id_str => id_str)

その後、通常のブラウザ クエリも非常に遅くなり、それぞれ約 2 分かかります。

MATCH (n2 {id_str : 'some_id'})-->(child) return child.id_str
Returned 2 rows in 116201 ms

私はneo4j用に8GBのRAMと1GBのヒープを備えた64ビットのubuntu 14.04ラップトップで実験を実行しました。Neo4j のバージョンは、公式の deb パケットからインストールされた 2.1.3 です。Neography のバージョンは 1.6.0 です。私はMRI-1.9.3を使用しています。

neo がクエリの処理で忙しいときに、kill -3 を使用してスタックダンプを作成しました。 https://gist.github.com/akamaus/a06bc9e04c7209c480e9

何がうまくいかないのか、それを調査する方法はありますか?

4

0 に答える 0