gpt4 book ai didi

java - 按需将 Neo4J 加载到内存中以进行繁重的计算

转载 作者:行者123 更新时间:2023-11-30 02:39:31 28 4
gpt4 key购买 nike

如何按需将 Neo4J 加载到内存中?

在我长期运行的工作的不同阶段,我将节点和关系保存到 Neo4J。所以 Neo4J 应该在磁盘上,因为它可能会消耗太多内存,而且我不知道什么时候要对其运行读取查询。

但在某些时候(仅一次)我会想要对我的 Neo4J 服务器运行相当繁重的读取查询,并且它的性能非常差(几个小时)。作为一个解决方案,我想将所有 Neo4J 加载到 RAM 以获得更好的性能。

最好的选择是什么?我应该使用运行盘还是有更好的解决方案?

附注

使用 [r:LINK_REL_1*2] 进行查询的速度非常快,[r:LINK_REL_1*3] 的运行时间为 17 秒,[r:LINK_REL_1*4 ] 工作超过 5 分钟,甚至不知道多少,因为我有 5 分钟超时。但我需要 [r:LINK_REL_1*2..4] 查询在合理的时间内执行。

我的重查询解释

PROFILE
MATCH path = (start:COLUMN)-[r:LINK_REL_1*2]->(col:COLUMN)
WHERE start.ENTITY_ID = '385'
WITH path UNWIND NODES(path) AS col
WITH path,
COLLECT(DISTINCT col.DATABASE_ID) as distinctDBs
WHERE LENGTH(path) + 1 = SIZE(distinctDBs)
RETURN path

enter image description here

更新了查询并提供了解释(在测试中获得了相同的性能)

PROFILE
MATCH (start:COLUMN)
WHERE start.ENTITY_ID = '385'
MATCH path = (start)-[r:LINK_REL_1*2]->(col:COLUMN)
WITH path, REDUCE(dbs = [], col IN NODES(path) |
CASE WHEN col.DATABASE_ID in dbs
THEN dbs
ELSE dbs + col.DATABASE_ID END) as distinctDbs
WHERE LENGTH(path) + 1 = SIZE(distinctDbs)
RETURN path

enter image description here

最佳答案

APOC程序有apoc.warmup.run() ,这可能会将 Neo4j 的大部分内容放入缓存内存中。看看这是否会有所作为。

关于java - 按需将 Neo4J 加载到内存中以进行繁重的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42148577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com