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