在改进密码查询的过程中,我意识到起始节点的查找时间从大约200毫秒到大约500毫秒(从网络管理数据浏览器工具报告)。第一次运行时查找需要更多时间,最差情况超过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
另外,如果它有帮助:
内存映射设置设置为以下值(图中没有数组属性):
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
这个大小的图表的查找时间是否正常?如何改进?