要运行单个查询,neo4j是否将整个节点图带到ram并执行查询?

最佳答案

neo4j使用pagecache(可以在neo4j.conf中定义大小)将数据库的一部分缓存到内存中,因此查询的图形越多,pagecache得到的预热就越多(还有一些过程,比如apoc的预热过程,可以在数据库启动时帮助运行)。
也就是说,只有图中被查询所触及的部分才会进入pagecache(前提是它们还不在其中)。
如果您分析查询并在查询计划中看到大量的数据库点击和行,那么可能是图的很大一部分正在被访问和缓存。
如果您的查询是一个关系图范围的查询,它涉及到关系图的大部分内容,这可能是意料之中的。
但是,如果查询只涉及图的一小部分,则可能表明查询未进行优化(例如缺少找到匹配的起始节点的索引,或查询本身存在其他问题),并且可能需要进行更改或获得帮助以简化查询。如果问题是这样的话,可以尝试neo4j用户slack来获得cypher查询的建议。

09-04 04:10
查看更多