在Neo4j中进行慢速索引查找

时间:2013-09-17 12:33:41

标签: neo4j cypher

在改进密码查询的过程中,我意识到起始节点的查找时间从大约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

另外,如果它有帮助:

  • 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

这个大小的图表的查找时间是否正常?如何改进?

0 个答案:

没有答案