elasticsearch写入原理

一、流程图
Es写入流程图
二、流程分析
1、写入数据时,同时写入内存的buffer缓冲区和translog日志文件。
2、刚写入buffer中的数据不能被查询,buffer缓冲区每隔1s刷新refresh到segment file保存到操作系统缓存os cache中(这也是ES近实时原因)同时更新commit point,此时数据才能被查询;
3、translog日志文件也在缓存中,也需要经过os cache再写入磁盘,每隔5s写入磁盘一次(宕机后最多丢失5s数据)。
4、每隔30min或者translog足够大时,会强行flush,将segmentfile写入磁盘,然后清空translog文件。此时os cache中的数据也会为空
5、当segment太多时,os cache中会自动定期的将多个segment合并成一个大的segment,合并后将多余的文件del掉,实现真正意义的删除操作。普通的删除只是逻辑删除。

三、提问:
1、为什么要写入translog日志文件中,通过tanslog记录来恢复和记录日志,而不是每5s直接将数据写入磁盘。translog日志文件每5s写入磁盘也需要消耗性能啊
2、flush刷盘时,buffer中的缓存是先refresh到os cache中还是等待flush完毕后再进行
3、commit point的作用?

四、待更新
。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值