微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

所有简单循环路径查询返回太多数据 -> 堆溢出

如何解决所有简单循环路径查询返回太多数据 -> 堆溢出

我对 Neo4j 很陌生,并且使用带有 Javascript 驱动程序的 Neo4j 桌面版本。我的图有大约 30.000 个节点和 40.000 条边。最后一种方法获取图中的所有简单循环,但在尝试执行以下密码查询时遇到堆溢出:

let res = await session.run('MATCH p=(n)-[*2..4]-(n) RETURN nodes(p)')

这当然是因为查询试图返回找到的所有简单循环,这对我的堆来说太多了,并且不愉快地增加 node.js 的内存不是一个选项。

那么有什么办法可以绕过这个问题并从图中得到所有简单的循环?

这是我得到的堆溢出错误

/Users/paulus/.nvm/versions/node/v15.10.0/bin/node /Users/paulus/routeplanner/RouteFinder.js

<--- Last few GCs --->

[39630:0x104e00000]   227813 ms: Scavenge (reduce) 2033.5 (2077.9) -> 2032.1 (2072.1) MB,113.5 / 0.0 ms  (average mu = 0.577,current mu = 0.321) allocation failure 
[39630:0x104e00000]   228171 ms: Scavenge (reduce) 2036.5 (2072.6) -> 2035.5 (2075.6) MB,28.6 / 0.0 ms  (average mu = 0.577,current mu = 0.321) allocation failure 
[39630:0x104e00000]   228558 ms: Scavenge (reduce) 2039.1 (2075.6) -> 2038.5 (2080.4) MB,28.2 / 0.0 ms  (average mu = 0.577,current mu = 0.321) allocation failure 


<--- JS stacktrace --->


<--- Last few GCs --->

[39630:0x104e00000]   227813 ms: Scavenge (reduce) 2033.5 (2077.9) -> 2032.1 (2072.1) MB,current mu = 0.321) allocation failure 


<--- JS stacktrace --->

Fatal error: MarkCompactCollector: young object promotion Failed Allocation Failed - JavaScript heap out of memory
Fatal error: MarkCompactCollector: young object promotion Failed Allocation Failed - JavaScript heap out of memory

<--- Last few GCs --->

[39630:0x104e00000]   227813 ms: Scavenge (reduce) 2033.5 (2077.9) -> 2032.1 (2072.1) MB,current mu = 0.321) allocation failure 


<--- JS stacktrace --->

Fatal error: MarkCompactCollector: young object promotion Failed Allocation Failed - JavaScript heap out of memory

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

解决方法

在不知道图形的数据模型的情况下很难为您提供准确的解决方案,但使用跳过/限制来获取较小批量的数据可能会有所帮助。

这将获得前 100 个模式:

MATCH p=(n)-[*2..4]-(n) RETURN nodes(p) SKIP 0 LIMIT 100

这是下一个 100:

MATCH p=(n)-[*2..4]-(n) RETURN nodes(p) SKIP 100 LIMIT 100

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。