【发布时间】:2015-06-10 23:03:21
【问题描述】:
我有一个加载到 Neo4j 中的包含数百万个节点和 300 万条边的图。它在进行广度优先遍历时崩溃,抱怨 8 GB 机器上的内存不足。每个节点标签字符串的平均长度为 40 个字符。
Neo4j 使用什么样的内部表示需要这么多内存,尤其是。遍历?鉴于 Neo4j 能够表示整个图,为什么它在尝试维护广度优先遍历所需的访问节点集时会失败。
根据我的理解,上述图形的邻接列表格式的图形表示应该以 MB 为单位。 计算假设节点和边的 64 位表示
- 300万条边*8字节*3=72M(节点链接节点)
- 100 万个节点 *(40 + 8 + 8 个字节)= 56 M(64 位哈希链接到节点字符串标签)
【问题讨论】:
标签: optimization graph neo4j graph-databases internals