elasticsearch,segments,Caching,elasticsearch,Segments" /> elasticsearch,segments,Caching,elasticsearch,Segments" />

Caching ElasticSearch中的Translog:实时积垢和廉价的fsync?

Caching ElasticSearch中的Translog:实时积垢和廉价的fsync?,caching,elasticsearch,segments,Caching,elasticsearch,Segments,在浏览ElasticSearch的权威指南时,我偶然发现了一些谜团。首先确定搜索几乎是实时的,因为更改需要作为文件系统缓存中的一个新段刷新(默认情况下每秒钟一次),只有在这之后才能被搜索机制看到,并且不使用fsync,因为这样做成本太高 然后是translog。出于某种原因,它可以用于实时积垢。因此,引擎首先遍历它在文件系统缓存中知道的所有段,并添加它在translog中找到的更改。如果translog可以实时保持最新,那么让片段实时保持最新的内在问题是什么?是为了防止缓存中的段过多吗 此外,为

在浏览ElasticSearch的权威指南时,我偶然发现了一些谜团。首先确定搜索几乎是实时的,因为更改需要作为文件系统缓存中的一个新段刷新(默认情况下每秒钟一次),只有在这之后才能被搜索机制看到,并且不使用fsync,因为这样做成本太高

然后是translog。出于某种原因,它可以用于实时积垢。因此,引擎首先遍历它在文件系统缓存中知道的所有段,并添加它在translog中找到的更改。如果translog可以实时保持最新,那么让片段实时保持最新的内在问题是什么?是为了防止缓存中的段过多吗


此外,为什么默认情况下translog可以每5秒进行一次fsynced,而段不能进行fsynced?

段是不可变的。它们从不更新,而是与其他细分合并以形成更大的细分。通过具有不可变的段,ElasticSearch通过页面/文件缓存将缓存卸载到操作系统


translog充当一个仅附加的缓冲区,一旦刷新,它就会升级到一个持久段

谢谢,但我到了。问题是,默认情况下,translog确实每5秒刷新一次(从而形成一个段)。为什么这与它试图解决的原始问题不同?对不起,我想我当时不明白你的问题。