のリストを作成するのNeo4j。 私は、このような流れからノードをアップサートするために、このクエリを使用:IDラベルにIは<strong>ID</strong>ノードのnumberic IDであり、<strong>IDS</strong>は、隣接ノードのIDのリストである<em>ペア</em><strong></strong>のストリームを有するエッジ
WITH ${ids.mkString("[", ",", "]")} as ids
UNWIND ids as u2id
MERGE (u1:User {Id:${id}})
MERGE (u2:User {Id:u2id})
CREATE UNIQUE p = (u1) - [:FRIEND] -> (u2)
を、私はインデックスを持っている
CREATE INDEX ON :User(Id)
のIDリストの長さは約100〜200の平均です。
現在、6000万のノードとミルがあります。データベース内のエッジの数。 upsertingの速度は約対秒です。 Neo4jは、Core i5、28Gb RAM、2Tb WD Blackの専用マシンで動作します。
どのようにupsertingクエリを最適化することができますか、ハードウェアを改善するためのヒントがありますか。
質問のカップル... 1)(それはあなたがCSVファイル内のすべての更新が言うとLOAD CSVを行うかもしれないということではありません)ストリーム一定のですか? 2)ユーザー(Id)は単なる索引か一意の制約ですか? 3)実際に新しいユーザーを作成していますか(MERGEはそれを意味します)? 4)そのような実行のPROFILEの展開イメージを追加できますか? –
遅くて申し訳ありませんが、1)はいそれは真のストリームです2)インデックス3)はい、作成4)不幸にもデータベースにアクセスできない今すぐ –