ノードとしてSerieと関係としてEDGEで構成されたneo4jグラフがあります。私は2つのノード間のallShortestaPathsを計算することができるクエリを持っています。NEO4Jのパフォーマンスを複数回実行クエリ
MATCH (serie1:Serie {serie_id: 'id1'}),
(serie2:Serie {serie_id: 'id2'}),
p = allShortestPaths((serie1)-[EDGE*..6]-(serie2))
RETURN p as shortestPath
私のアプリケーションは、数回の繰り返しをしている各反復でそれは2つの異なるノード(serie1、serie2)でクエリを複数回実行して、グラフ上のいくつかの新しいエッジを書き込みます。
最初の反復(20回のクエリ)は非常に高速に実行されますが、2回目の反復で応答時間が増加し始め、クエリは実行ごとに3分以上かかります。
私はserie_idプロパティのインデックスを作成しました。また、8GBのスペースとページキャッシュサイジングにも十分なスペースがあるまでヒープスペースを増やしました。
また、クエリが別の方法で書き換えられるかどうかを調べていますが、これがより良い方法だと思われます。
問題は実行回数に関係していると思いますが、最適化の方法は不明です。
neo4jのどのバージョンを使用しますか? –
結果を比較するために、最初の反復の前後にクエリーの1つを 'PROFILE'することができますか? –
私はneo4jバージョン3.6を使用しています – silvestrelosada