1

在改进密码查询的过程中,我意识到起始节点的查找时间从 ~200ms 到 ~500ms(从 web 管理数据浏览器工具报告)。查找在第一次运行时需要更多时间,最坏情况超过 1 秒。

我用来测试的查询就像这样简单:

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

该图非常大:现在大约有 2800 万用户节点(它是唯一的一种节点)。但即使在这种情况下,查找时间似乎也很慢。

使用 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
  • 该图占用大约 62GB 的磁盘空间(不是 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