何时使用页面缓存的每个实现?

时间:2016-03-04 06:12:59

标签: neo4j

查看Neo4j代码,有一个页面缓存的API和两个实际的实现(不考虑内核中的一个),默认的一个和Muninn的一个。文档说明了Munnin的一个:

PageCache的这种实现针对具有大内存容量和大型存储的配置进行了优化,并使用序列锁来快速进行无法读取和写入。

这使我相信这两个实现是相互独立的,但是当您查看实际代码时,API的某些部分仅在默认实现中实现(PageSwapper和 PageSwapperFactory )其他一些只在Munnin实现( PageCache,PageCursor,PagedFile,PageEvictionCallback )。

此外,在调试和搞乱一些查询时,我注意到SinglePageFileSwapper(来自默认实现)收到了一个MuninnPage(来自Muninn实现)。

所以我的问题如下:

如果两个实现不是独立的,并且两者都实现了一些(例如,Page接口有两个实现: ByteBufferPage MuninnPage ) ,如何决定何时使用哪一个?

1 个答案:

答案 0 :(得分:1)

从Neo4j 2.3开始,只有一个实现:MuninnPageCache。在2.2中,我们还有一个专门用于ParallelBatchImporter的实现 - import-tool背后的机制。

内核模块中的实现仅用于将其连接到数据库内核的生命周期机制。

所以MuninnPageCache是唯一使用的,因为它是我们产品中唯一的一个。 (至少在2.3和3.0中)