elasticsearch写入数据存储的过程
2018-03-20 12:36
543 查看
es建索引写入数据,数据最先是存在内存buffer里的,然后再刷入到lucene的底层文件segment中;
写入segment完毕后再执行refresh操作,refresh操作后,数据将commit到磁盘中。
数据刷入到了磁盘,就可以执行查询操作了。
过程简单描述如下:内存buffer-->segment-->refresh-->磁盘
注意,这些过程,会有translog记录;translog存在的意义就是保证数据刷入的可靠性;
因为我们刚才说过,es建索引写入数据的过程是内存到磁盘的过程,这个过程有日志的记录,
那就是translog,当数据还在内存里没刷到磁盘中时,如果服务器down了又没translog机制的话,
那么数据就会丢失,有了translog,服务器down机后再起来,就能很快恢复写入的过程。
这里要注意的是,translog也是先存在内存里的,然后默认5秒刷一次写到硬盘里。
写入segment完毕后再执行refresh操作,refresh操作后,数据将commit到磁盘中。
数据刷入到了磁盘,就可以执行查询操作了。
过程简单描述如下:内存buffer-->segment-->refresh-->磁盘
注意,这些过程,会有translog记录;translog存在的意义就是保证数据刷入的可靠性;
因为我们刚才说过,es建索引写入数据的过程是内存到磁盘的过程,这个过程有日志的记录,
那就是translog,当数据还在内存里没刷到磁盘中时,如果服务器down了又没translog机制的话,
那么数据就会丢失,有了translog,服务器down机后再起来,就能很快恢复写入的过程。
这里要注意的是,translog也是先存在内存里的,然后默认5秒刷一次写到硬盘里。
相关文章推荐
- elasticsearch写入数据存储的过程
- elasticsearch写入数据存储的过程
- 在.net中如何把调用存储过程代码写入数据连接层中
- [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数
- spark-parquet列存储之:数据写入过程源码分析
- 存储过程写入大批量数据,用于测试mysql查询优化
- mysql用存储过程写入 一个表A中没有存在在另一个表B的数据
- 利用存储过程写入测试数据
- Android开发过程中将APP的数据写入本地存储的方法
- 在.net中如何把调用存储过程代码写入数据连接层中
- mysql存储过程插入固定数量测试数据
- php通过存储过程传入汉字参数并写入数据库
- 存储过程中Like没有数据?
- 通过存储过程来删除已造出大量的数据
- 存储过程如何向一张表中循环插入1000条数据和字段二进制转换
- 将表里的数据批量生成INSERT语句的存储过程 增强版
- RocksDB写入数据过程DBImpl::Write()源代码分析
- oracle 写入数据文件的过程
- 一个高效的数据分页的存储过程 可以轻松应付百万数据
- C 语言编译过程 C语言中各种数据存储的不同内存区域 关于sizeof 结构体比实际的大的问题