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来保障数据安全了

 


浏览 105
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报