【发布时间】:2014-12-24 16:36:50
【问题描述】:
recent blog post on Elasticsearch 网站正在谈论他们新的 1.4 测试版的功能。
我很好奇他们如何使用文件系统缓存:
最近的版本增加了对文档值的支持。本质上,文档值提供与内存中字段数据相同的功能,但它们在索引时写入磁盘。它们提供的好处是它们消耗的堆空间非常少。 Doc 值是从磁盘读取的,而不是从内存中读取的。虽然磁盘访问速度很慢,但 doc 值受益于内核的文件系统缓存。与 JVM 堆不同,文件系统缓存不受 32GB 限制。通过将字段数据从堆转移到文件系统缓存,您可以使用更小的堆,这意味着更快的垃圾收集和更稳定的节点。
在此版本之前,文档值明显慢于内存中的字段数据。 此版本中的更改显着提高了性能,使其几乎与内存中的字段数据一样快。
这是否意味着我们可以操纵文件系统缓存的行为而不是被动地等待来自操作系统的影响?如果是这样,我们如何在正常的应用程序开发中使用文件系统缓存?比如说,如果我正在编写 Python 或 Java 程序,我该怎么做呢?
【问题讨论】:
-
我相信这是 ES 内部的东西。 “操纵文件系统缓存的行为”是什么意思?你想用它做什么?
-
@AndreiStefan 您提供的博客文章是关于 Lucene(或 ES?)如何使用文件系统缓存的绝佳参考。您想强调该文章中的一些关键点并作为答案发布吗?我会接受:)
标签: java python performance caching elasticsearch