es Refresh和Flush区别
王猴卖瓜
共 523字,需浏览 2分钟
·
2021-03-31 21:34
refresh操作
默认情况下,es每隔一秒钟执行一次refresh,可以通过参数index.refresh_interval
来修改这个刷新间隔,执行refresh操作具体做了哪些事情呢?
所有在内存缓冲区中的文档被写入到一个新的segment中,但是没有调用fsync,因此内存中的数据可能丢失
segment被打开使得里面的文档能够被搜索到
清空内存缓冲区
flush操作
随着translog文件越来越大时要考虑把内存中的数据刷新到磁盘中,这个过程称为flush,flush过程主要做了如下操作:
把所有在内存缓冲区中的文档写入到一个新的segment中
清空内存缓冲区
往磁盘里写入commit point信息
文件系统的page cache(segments) fsync到磁盘
删除旧的translog文件,因此此时内存中的segments已经写入到磁盘中,就不需要translog来保障数据安全了
评论