Elasticsearch最近的一篇博客文章介绍了他们新的1.4 beta版本的功能。
我非常好奇他们如何利用文件系统缓存:
这是否意味着我们可以主动操纵文件系统缓存的行为,而不是被动地等待操作系统生效?如果是这样,我们如何在普通应用程序开发中利用文件系统缓存?例如,如果我正在编写Python或Java程序,该怎么做?最近的版本增加了对文档值的支持。本质上,文档值提供与内存字段数据相同的功能,但它们在索引时写入磁盘。它们提供的好处是它们消耗很少的堆空间。文档值是从磁盘读取,而不是从内存中读取。虽然磁盘访问速度较慢,但文档值受益于内核的文件系统缓存。文件系统缓存与JVM堆不同,不受32GB限制。通过将字段数据从堆转移到文件系统缓存,可以使用更小的堆,这意味着更快的垃圾回收,从而使节点更加稳定。
在此版本之前,文档值比内存字段数据慢得多。此版本中的更改显着提高了性能,使它们几乎与内存字段数据一样快。