哈希存储引擎
是哈希表的持久化实现,支持增删改及随机读取操作,但是不支持顺序扫描,对应的存储系统为key-value存储系统。对于key-value的插入及查询,哈希表的复杂度都是O(1),明显比树的操作O(n)要快,如果不需要有序的遍历数据,那么哈希表就是your Mr.Right。
B树存储引擎
是B树的持久化实现。不仅支持单条记录的增删查改操作,还支持顺序扫描(B+树的叶子节点之间的指针),对应的存储系统就是关数据库。
LSM树(Log-Structured Merge Tree)
和B树存储引擎一样,支持增删查改及顺序扫描操作。而且通过批量存储技术规避了磁盘的随机读写问题。当然LSM树和B+树相比,LSM树牺牲了部分读写性能,用来大幅度提高写性能。设计思想:将对数据的修改增量保存在内存中,达到指定大小限制后将这些修改操作批量写入磁盘,不过读取的时候稍微麻烦些,需要合并磁盘中历史数据和内存中最近修改操作,所以写入性能大大提升,读取时可能需要先看是否命中内存,否则需要访问较多的磁盘文件。极端的说,基于LSM树实现的HBase的写性能比Mysql高了一个数量级,读性能低了一个数量级。LSM树原理是把一棵大树拆分成N棵小树,它受限写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做merge操作,合并成一颗大树,以优化读性能。