2014-09-02 63 views
0

我想查询800万个节点在neo4j数据库中。我可以轻松地完成精确匹配的索引查询,但有没有一种高性能的方法来进行聚合?在数百万个节点上的汇总查询

MATCH (r:Resident) RETURN r.forename, count(r.forename) ORDER BY count(r.forename) 

此查询只是坐在那里,直到我最终重新启动我的服务器。我已经阅读了性能指南,并且正在观看vm_stat,而且它似乎很快就会免费用完。我已经尝试调整内存/ JVM堆设置以适应各种各样的事情,但我不确定自己完全知道自己在做什么;)我有一个8 GB的MacBook Air和一个SSD驱动器,以防建议设置。此外,这里是我的DB我的统计从WebAdmin的:

10,236,226 nodes 

56,280,161 properties 

10,190,430 relationships 
2 relationship types 

14,535 MB database disk usage 
+0

限制将有所帮助 - 否则需要建立一个完整的名称列表和计数结果集。 – 2014-09-23 04:05:59

回答

0

我插入8M节点只有1道具,并得到了该查询到〜20S不改变默认设置(预热缓存后 - 第一次花了90年代),这是相当于其他数据库,如postgres(我也测试过)。

有些事情你可以尝试这样做:

  • 提高对相应的文件MMIO设置(根据数据/ graph.db /文件大小)中的conf/neo4j.properties大小(在顶部)
  • 增加neo4j.properties节点缓存大小
  • 增加的Neo4j-wrapper.conf堆的init /最大
  • 确保你有足够的RAM遗留