Neo4j 数百万节点上的聚合查询

Neo4j 数百万节点上的聚合查询,neo4j,Neo4j,我试图在neo4j数据库中查询约800万个节点。我可以很容易地查询出精确匹配的索引,但是有没有一种高效的方法来进行聚合呢 MATCH (r:Resident) RETURN r.forename, count(r.forename) ORDER BY count(r.forename) 在我最终重新启动服务器之前,这个查询一直存在。我已经阅读了性能指南,正在观看vm_stat,它的免费页面似乎很快就用完了。我尝试过根据各种情况调整内存/JVM堆设置,但我不确定自己是否完全知道自己在做什么;)我

我试图在neo4j数据库中查询约800万个节点。我可以很容易地查询出精确匹配的索引,但是有没有一种高效的方法来进行聚合呢

MATCH (r:Resident) RETURN r.forename, count(r.forename) ORDER BY count(r.forename)
在我最终重新启动服务器之前,这个查询一直存在。我已经阅读了性能指南,正在观看vm_stat,它的免费页面似乎很快就用完了。我尝试过根据各种情况调整内存/JVM堆设置,但我不确定自己是否完全知道自己在做什么;)我有一个8 GB的MacBook Air,带有SSD驱动器,以防有助于建议设置。此外,以下是我在webadmin数据库上的统计信息:

10,236,226 nodes

56,280,161 properties

10,190,430 relationships
2 relationship types

14,535 MB database disk usage

我用一个道具插入了8M个节点,并在不更改默认设置的情况下(在预热缓存后——第一次用了90秒)将查询时间缩短到20秒,这与其他数据库(如postgres)相当(我也测试过)

您可以尝试做一些事情:

  • 提高conf/neo4j.properties(顶部)中相应文件mmio设置的大小(根据data/graph.db/中的文件大小)
  • 增加neo4j.properties中的节点缓存大小
  • 增加neo4j-wrapper.conf中的heap init/max
  • 确保你有足够的剩余内存
限制会有所帮助,否则它需要建立一个完整的姓名列表及其计数的结果集。