将所有Neo4J db加载到RAM

时间:2012-04-03 14:57:50

标签: neo4j

我正在尝试将所有Neo4j数据库加载到RAM中,因此查询工作速度会更快。将属性映射传递给图创建时,我没有看到该进程在内存中占用的空间与之前相同,并且它与磁盘上的文件空间不成比例。 可能是什么问题呢?以及如何修复.... 感谢

1 个答案:

答案 0 :(得分:5)

Neo4j懒洋洋地加载所有数据,这意味着它在首次访问时将它们加载到内存中。缓存选项仅与GC策略有关,因此何时(或如果)引用将被GC。要将整个图形加载到内存中,您的缓存类型必须很强,并且需要遍历整个图形一次。你可以这样做:

// untested java code

import org.neo4j.helpers.collection.IteratorUtil;

// ...

for(Node node : graph.getAllNodes()) {
  IteratorUtil.count(node.getRelationships());
}

这样,所有节点和关系都将被使用一次,从而加载到缓存中。