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

时间:2014-09-02 12:21:54

标签: neo4j

我正在尝试查询neo4j数据库中的~800万个节点。我可以很容易地进行对索引进行精确匹配的查询,但是有一种高效的聚合方法吗?

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

这个查询就在那里,直到我最终重新启动我的服务器。我已经阅读了性能指南,而且我正在观看vm_stat,它似乎很快就会耗尽页面。我已经尝试将内存/ JVM堆设置调整到各种各样的东西,但我不确定我完全知道我在做什么;)我有一个带有SSD驱动器的8 GB MacBook Air,以防有助于建议设置。另外,这是我在webadmin上的数据库中的统计数据:

10,236,226 nodes

56,280,161 properties

10,190,430 relationships
2 relationship types

14,535 MB database disk usage

1 个答案:

答案 0 :(得分:0)

我只用一个道具插入了8M节点,并且在不改变默认设置的情况下将此查询降低到~20s(在预热缓存后 - 第一次花了90s),这与其他数据库如postgres(我是也测试过)。

您可以尝试做的一些事情:

  • 在conf / neo4j.properties(顶部)中提高相应文件mmio设置的大小(根据data / graph.db /中的文件大小)
  • 在neo4j.properties中增加节点缓存大小
  • 在neo4j-wrapper.conf
  • 中增加堆init / max
  • 确保剩余足够的内存