1

サイファー クエリを改善する過程で、開始ノードのルックアップ時間が ~200ms から ~500ms (Web 管理データ ブラウザー ツールから報告) かかることに気付きました。ルックアップは、1 秒を超える最悪のケースで最初の実行に時間がかかります。

これをテストするために使用してきたクエリは、次のように単純です。

START user=node:USERS(id={user_id})
RETURN user.id

グラフは非常に大きく、現在約 2,800 万のユーザー ノードがあります (ノードの種類はこれだけです)。しかし、その場合でも、ルックアップ時間はかなり遅いようです。

Neography を使用してコールド グラフで REST API をクエリするベンチマークでは、最初のヒットについて次のように報告されます。

       user     system      total        real
   0.060000   0.010000   0.070000 (  0.959000)

後続のヒットの時間は 200 ミリ秒未満です。

       user     system      total        real
   0.010000   0.000000   0.010000 (  0.173000)

次の結果で、neo4j-shell 内で同じクエリをテストしました。

neo4j-sh (?)$ start n=node:USERS(id='xxxxxxxxxxxxxxx') return n;

+--------------------------------------------+
| n                                          |
+--------------------------------------------+
| Node[31120999]{id:"xxxxxxxxxxxxxxx", ...}  |
+--------------------------------------------+
1 row

252 ms

neo4j-sh (?)$ start n=node:USERS(id='xxxxxxxxxxxxxxx') return n;

+--------------------------------------------+
| n                                          |
+--------------------------------------------+
| Node[31120999]{id:"xxxxxxxxxxxxxxx", ...}  |
+--------------------------------------------+
1 row

34 ms

また、それが役立つ場合:

  • Neo バージョンは 1.9.2 です
  • グラフは、約 62 GB のディスク容量を必要とします (SSD ではありません)。
  • 現在の最大ヒープ サイズは 6GB です。
  • マシンには 8GB の RAM が搭載されています。

メモリ マッピング設定は次の値に設定されます (グラフに配列プロパティはありません)。

neostore.nodestore.db.mapped_memory=768M
neostore.relationshipstore.db.mapped_memory=768M
neostore.propertystore.db.mapped_memory=1024M
neostore.propertystore.db.strings.mapped_memory=1024M
neostore.propertystore.db.arrays.mapped_memory=130M

このサイズのグラフのルックアップ時間は正常ですか? どうすれば改善できますか?

4

0 に答える 0