我已经安装了APOC程序并使用了#34; CALL apoc.warmup.run。"
结果如下:
pageSize 8192 nodesPerPage nodesTotal nodesLoaded nodesTime 546 156255221 286182 21 relsPerPage relsTotal relsLoaded relsTime 240 167012639 695886 8 totalTime 30
看起来neo4j服务器只缓存部分节点和关系。 但我希望它能够缓存所有节点和关系,以提高查询性能。
答案 0 :(得分:2)
首先,对于要缓存的所有数据,您需要page cache large enough。
然后,问题不在于Neo4j没有全部缓存它,它更像是apoc.warmup.run
过程中的一个错误:它检索数据库中的节点数(resp。关系),并期望它们所有人都有ids between 1 and that number of nodes(分别为relationships)。但是,如果您在数据库中有一些流失,那就不是真的,比如创建更多节点然后删除其中一些节点。
我相信可以通过使用其他查询来修复:
MATCH (n) RETURN count(n) AS count, max(id(n)) AS maxId
作为分析,它显示的节点数与节点数相同,并且在我的机器上需要大约650毫秒才能获得140万个节点。
更新:我已就该主题打开issue。
更新2
虽然id的问题是真实的,但我错过了程序报告读取节点少得多的真正原因:它只读取one node per page(假设它们是按顺序存储的),因为它是缓存的页面。使用当前值,这意味着尝试每546个节点读取一个节点。它发生在 156255221÷546 = 286181 ,并且节点0
使其加载了286182个节点。