HBase/TiDB都在用的数据结构:LSM Tree,不得了解一下?
码农沉思录
共 2327字,需浏览 5分钟
·
2020-08-18 14:34
ACID
RUM
为什么要有LSM Tree
LSM Tree读数据
“ReadOnly MemTable:如RocksDB,在MemTable 和 Level0数据之间还有一个内存的ReadOnly MemTable结构。它是LSM Tree在内存中还未刷盘的写入数据,这里面的数据不可以修改。是当MemTable到达一定量需要刷到SSTable时,由MemTable完整copy下来的。这样可避免从MemTable直接刷到SSTable时的并发竞争问题。
LSM Tree写数据
当有写请求时,数据会先写入MemTable,同时写入 WAL Log;当MemTable空间不足时,触发ReadOnly MemTable copy,同时写入WAL Log;然后刷新到磁盘Level0的SSTable中。当低层SSTable空间不足时,不断通过Compaction和高层SSTable进行Merge。
LSM Tree合并策略
LSM Tree的优化
点读的优化
范围读的优化
合并的优化
RUM的取舍
后记
评论