A recent blog post on Elasticsearch網站正在談論他們新的1.4 beta版本的功能。如何在Java或Python中使用文件系統緩存?
我對他們如何利用文件系統緩存的很好奇:
最近發佈加入了對DOC值的支持。基本上,doc值提供的功能與內存中的fielddata相同,但是它們在索引時刻寫入磁盤。他們提供的好處是它們消耗的堆空間非常少。 Doc值是從磁盤讀取的,而不是從內存讀取。雖然磁盤訪問速度慢,但文檔值受益於內核的文件系統緩存。與JVM堆不同,文件系統緩存不受32GB限制的限制。通過將字段數據從堆轉移到文件系統緩存,您可以使用更小的堆,這意味着更快的垃圾回收以及更穩定的節點。
在此版本之前,doc值顯着低於內存中的fielddata。 此版本中的更改顯着改善了性能,使它們幾乎與內存中的fielddata一樣快。
這是否意味着我們可以操縱文件系統緩存的行爲,而不是等待來自操作系統的效果被動?如果是這樣的話,我們如何在正常的應用開發中利用文件系統緩存呢?假如我正在編寫一個Python或Java程序,我該怎麼做?
我相信這是ES內部的東西。 「操縱文件系統緩存的行爲」是什麼意思?你想用它做什麼? – 2014-10-29 09:55:42
http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html – 2014-10-30 07:05:31
@AndreiStefan您提供的博客文章是關於Lucene(或ES?)如何使用文件系統緩存的極好參考。你想突出那篇文章中的一些關鍵點並作爲答案嗎?我會接受:) – shihpeng 2014-10-30 15:15:23