如何解决NEO4J 查询优化 -- TimeTree
为了创建一个时间树,我想使用这个语句:
WITH range(2020,2021) AS years,range(1,12) as months,range(0,24) as hours,60) as minutes,60) as seconds
MERGE (tr:timeRoot {name: "timeRoot"})
FOREACH(year IN years |
MERGE (y:calYear {name: year})
MERGE (tr)-[:HAS_YEAR]->(y)
FOREACH(month IN months |
CREATE (m:calMonth {name: month})
MERGE (y)-[:HAS_MONTH]->(m)
FOREACH(day IN (CASE
WHEN month IN [1,3,5,7,8,10,12] THEN range(1,31)
WHEN month = 2 THEN
CASE
WHEN year % 4 <> 0 THEN range(1,28)
WHEN year % 100 <> 0 THEN range(1,29)
WHEN year % 400 <> 0 THEN range(1,29)
ELSE range(1,28)
END
ELSE range(1,30)
END) |
CREATE (d:calDay {name: day})
MERGE (m)-[:HAS_DAY]->(d)
FOREACH(hour IN hours |
CREATE (h:calHour {name: hour})
MERGE (d)-[:HAS_HOUR]->(h)
FOREACH(minute IN minutes |
CREATE (mi:calMin {name: minute})
MERGE (h)-[:HAS_MINUTE]->(mi)
FOREACH(second IN seconds |
CREATE (sec:calSec {name: second})
MERGE (mi)-[:HAS_SECOND]->(sec)
)
)
)
)
)
)
在 conf 文件中,内存的所有设置都是默认的,并且是推荐的。
当我遇到错误时,我的查询似乎搞砸了:
Neo.DatabaseError.Statement.ExecutionFailed Java heap space
当我减少要生成的节点数量时,它会起作用。数据库是空的,我希望它可以处理 1 个以上的 mio 节点。也许有人暗示如何调整查询或设置以允许生成甚至 10 年的时间树?
neo4j-db 的版本为 4.2.1,并在具有 12 GB 内存的 Windows 服务器上运行。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。