flush是什么意思?Elasticsearch中refresh和flush的区别是什么
本文目录
flush是什么意思
flush()意思是把缓冲区的内容强制的写出。 因为操作系统的某些机制,为了防止一直不停地磁盘读写,所以有了延迟写入的概念,(注意不要和frush()刷新混淆了)
主要用在IO中,即清空缓冲区数据,一般在读写流(stream)的时候,数据是先被读到了内存中,再把数据写到文件中,当你数据读完的时候不代表你的数据已经写完了,因为还有一部分有可能会留在内存这个缓冲区中。这时候如果你调用了close()方法关闭了读写流,那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。。
在网络web服务器上也是,为了防止写一个字节就发送一个消息,所以有缓冲区的概念,比如64K的内存区域,缓冲区写满了再一次性写入磁盘之中(或者发送给客户端浏览器)。
flush方法一般是程序写入完成时执行。随后跟着close方法。例如:
// 取得输出流。当然,看具体环境。
PrintWriter out = Util.getWriter();
out.println("输出一些信息,可能很多");
out.flush();
out.close();
Elasticsearch中refresh和flush的区别是什么
我们知道ES的索引数据是写入到磁盘上的。但这个过程是分阶段实现的,因为IO的操作是比较费时的。当一个文档进入ES的初期, 文档是被存储到内存里的,默认经过1s之后, 会被写入文件系统缓存,这样该文档就可以被搜索到了,注意,此时该索引数据被没有最终写入到磁盘上。如果你对这1s的时间间隔还不满意, 调用_refresh就可以立即实现内存-》文件系统缓存, 从而使文档可以立即被搜索到。所以refresh实现的是文档数据从内存到文件系统缓存的过程。再来看flush,flush是用于translog的。ES为了数据的安全, 在接受写入的文档的时候, 在写入内存buffer的同时, 会写一份translog日志,从而在出现程序故障/磁盘异常时, 保证数据的完整和安全。flush会触发lucene commit,并清空translog日志文件。 translog的flush是ES在后台自动执行的,默认情况下ES每隔5s会去检测要不要flush translog,默认条件是:每 30 分钟主动进行一次 flush,或者当 translog 文件大小大于 512MB主动进行一次 flush。对应的配置是index.translog.flush_threshold_period 和 index.translog.flush_threshold_size需要指出的是, 从ES2.0开始,每次 index、bulk、delete、update 完成的时候,一定触发flush translog 到磁盘上,才给请求返回 200 OK。这个改变提高了数据安全性,但是会对写入的性能造成不小的影响。在写入效率优先的情况下,可以在 index template 里设置如下参数:"index.translog.durability":"async" 和 "index.translog.sync_interval":30s (默认是5s)。
更多文章:

硒鼓有必要买原装的吗(买惠普原装的硒鼓还是买格之格的兼容硒鼓)
2024年7月20日 08:28

华为v8能升级鸿蒙系统吗(华为mate8现在可以更新鸿蒙系统了吗)
2024年6月11日 03:40

华为荣耀play3最严重缺点(荣耀play3和vivo y5s,该如何选择)
2023年5月14日 04:00

j533是什么控制单元(奥迪A6L上共有那些控制单元,J533和J794是怎么通讯的)
2025年2月24日 09:01

中兴手机有实体店吗(努比亚手机是中兴旗下的品牌吗手机不在网购能买到吗,比如手机实体店能买到吗)
2025年4月3日 13:40

酷乐视x6c精英版(囊中羞涩,请问比亚迪宋pro自动精英版和远景X6 4G互联网旗舰版买哪个比较好)
2024年2月20日 03:20

肯高uv镜77mm(求一关于UV镜的专业回答!肯高MC UV(O) 77mm,凤凰SP77mm L37UV,保谷HMC)
2024年9月26日 08:50

小米8有8 128的吗(小米8 8GB+128g跟6GB+128g区别)
2023年1月4日 18:00

小米手机1原系统(小米1的操作系统是多少Android原生系统是什么意思)
2024年8月6日 18:50

类似于声卡的手机软件(手机有什么变音软件类似于电脑的声卡机架可以改声音的)
2024年7月14日 18:34

honor是什么牌子手机60多少钱(honor60是什么牌子手机)
2023年12月13日 02:20