2016-03-04 20 views
1

看看Neo4j代碼,有一個用於頁面緩存的API和兩個實際的實現(不考慮內核中的那個),默認的和Muninn之一。該文檔陳述了關於Munnin的一個:什麼時候使用頁面緩存的每個實現?

PageCache的這種實現針對具有大內存容量和大型存儲的配置進行了優化,並且使用序列鎖來快速進行無爭議的讀取和寫入。

這使我相信兩個實現是相互獨立的,但是當你看到實際的代碼,API的某些部分的默認實現(PageSwapper和PageSwapperFactory)只是執行和其他一些只在Munnin中實現(PageCache,PageCursor,PagedFile,PageEvictionCallback)。另外,在調試和搞亂一些查詢時,我注意到SinglePageFileSwapper(來自默認實現)接收到MuninnPage(來自Muninn實現)。

所以我的問題是,因爲它遵循:

如果兩個實現不是獨立的,有些事情是在這兩個實施(例如有兩種實現方式的頁面接口:ByteBufferPageMuninnPage ),如何決定何時使用哪一個?

回答

1

從Neo4j 2.3開始,只有一個實現:MuninnPageCache。在2.2版本中,我們還有一個專門用於ParallelBatchImporter的實現 - 位於import-tool後面的機器。

內核模塊中的實現僅用於將其掛接到數據庫內核的生命週期機器。

所以MuninnPageCache是唯一使用的,因爲它是我們在產品中唯一的一個。 (至少2.3和3.0)

相關問題