标签:一个 日志 file 二层 个数 记录 限制 ima ash
对比三种引擎的实现:
LSM的原理:将对数据的修改增量保存在内存中,达到指定大小限制之后批量把数据flush到磁盘中,磁盘中树定期可以做merge操作,合并成一棵大树,以优化读性能。不过读取的时候稍微麻烦一些,读取时看这些数据在内存中,如果未能命中内存,则需要访问较多的磁盘文件。极端的说,基于LSM树实现的hbase写性能比mysql高了一个数量级,读性能却低了一个数量级。
LSM树原理把一颗大叔拆分成N颗小树,它首先在内存中,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成为一个大叔,用来优化读性能。
以上就是hbase存储设计的重要思想,这里说明一下:
关于LSM Tree,对于最简单的二层lsm而言。
lsm tree,理论上,可以是内存中树的一部分和磁盘中一层数做merge,对于磁盘中的树直接做update操作有可能会破坏物理block的连续性,在实际场景中,一般lsm有多层,当磁盘中的小树合并成为一个大树的时候,可以重新排好顺序,使block连续,优化读性能。
hbase在视线中,是把整个内存在一定阈值后,flush到disk中,形成一个hfile文件。这个file的存储也是一个小的b+树,因为hbase是存储在hdfs上,hdfs不支持更新操作,所以hbase的数据也是定期flush到磁盘中,而不是和文件中的hfile做合并操作。
标签:一个 日志 file 二层 个数 记录 限制 ima ash
原文地址:https://www.cnblogs.com/yankang/p/11041173.html