我正在建立一个由复杂数据的Neo4J实例支持的REST API,该实例的存储大小约为400 GB,并且需要为一组节点和关系预热页面缓存。
对一组输入数据有一些特定的要求,这需要大量时间来查询和获得响应。因此,我想要一种仅为这些调用访问的节点和关系预热缓存的方法。我尝试使用 APOC.warmup.run(true,true)(大约15分钟,这对我来说是可以接受的),但是它确实将整个存储区加载到内存中,因为我已经拥有了我试图编写一个穿越这些路径的简单Cypher,但是它要花很多时间才能执行,并且当我检查Neo4J实例的内存增长时,与APOC预热相比这非常慢。
我还在考虑是否有一种方法可以扩展/自定义APOC预热以仅加载商店的特定部分,但想看看是否有人在那里之前已经尝试过类似的操作。
我希望为商店的特定部分而不是整个商店进行热身的快速方法。
答案 0 :(得分:0)
您还应该为此配置足够的页面缓存(400G)
如果您使用apoc.warmup.run(true,true,true)
,还将预热架构索引。
我想这只花了15分钟,因为您的磁盘读取性能可能会降低?还有多少个CPU?
您不能真正加载商店的特定部分。
但是,最近的Neo4j版本跟踪页面缓存使用情况,并在重新启动后将其还原。 这样您就可以运行查询,重新启动后,相同的页面将位于页面缓存中。
如果您的查询中有 page-faults ,您还会看到PROFILE
。