我一直在尝试按照 neo4j google 组和其他在线来源的建议运行此查询:
开始 n = 节点(*)
匹配 n-[r?]-()
其中 ID(n)>0
删除n、r;
为了删除测试之间的所有节点和关系。当我从控制台执行此操作时,我用完了 java 堆空间。当我从 python 中执行此操作时(使用新的 graph_db.clear(),它似乎使用相同的查询),我得到一个“SystemError:None”,我认为这是相同的 java 堆空间错误。我有一个包含 500k 个节点、只有 5k 个关系和 7M 个属性的数据库。我正在一台具有 8GB RAM 的 Mac 笔记本电脑 (10.6.8) 上运行,使用 neo4j-1.8.1。我想我有点惊讶删除节点(基本上没有关系,所以非常小的子图)会超出java堆空间,但我对neo4j的工作原理非常天真。任何有关如何前进的建议都将受到赞赏。我确实知道数据目录中的 rm -rf 并从头开始会起作用,但我认为可能有一个不太激烈的解决方案。
[交叉发布到 neo4j google 群组]
上面的 cypher 语句会导致所有节点(除了 ID 为 0 的根节点之外)在单个事务中删除之前被实例化。当使用 500k 节点时,这会消耗太多内存。
尝试将要删除的节点数量限制在 10k-50k 左右,例如:
START n = node(*)
MATCH n-[r?]-()
WHERE (ID(n)>0 AND ID(n)<10000)
DELETE n, r;
START n = node(*)
MATCH n-[r?]-()
WHERE (ID(n)>0 AND ID(n)<20000)
DELETE n, r;
etc.
但是,删除整个数据库目录并没有什么问题,这是一个很好的做法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)