这是我参与「第四届青训营 」笔记创作活动的第30天
-
LSMT与存储引擎介绍
- LSMT:是通过Append-only Write+择机Compact来维护结构的索引树
-
存储引擎
- 计算层:主要负责SQL解析、查询优化、计划执行
- 存储层(存储引擎)
-
ACID,在MySQL中全部强依赖于存储引擎
- A(原子性):依赖Write-Ahead Log(WAL)/Redo Log
- C(持久性):依赖数据库整体
- I(独立性):依赖Snapshot/2PL(Phase Log)
- D(隔离性):Flusher遵循Sync语义
- 屏蔽IO细节提供更好的抽象
- 提供统计信息与Predicate Push Down(简单理解为过滤能力)能力
- 不掌控IO细节,让操作系统接管
-
LSMT与B+Tree
-
LSMT与B+Tree的异同
-
B+Tree
- 数据插入是原地更新的
- 在发生不平衡或节点容量达到阈值时,必须立即进行分裂来平衡
- LSMT与B+Tree从高数据结构看,而这没有本质不同,可相互转换
- 工程实践上用LSMT表示Append-only Write+Lazy Compact的索引树,B+Tree表示Inplace-Update和Instant Compact的索引树
-
-
为什么要采用LSMT
- HDD时代,顺序操作远快于随机操作
- SSD时代,顺序写操作远快于随机写操作
- 二者相同的地方是顺序写是对设备友好的操作,LSMT符合这一点,B+Tree依赖原地更新,导致随机写
-
-
LSMT模型算法
-
LSMT模型算法复杂度分析
- T: size ratio,每层 LSMT 比上一层大多少,LO 大小为 1,则 L1 大小为T,L2 为T^2,以此类推
- L: level num,LSMT 层数 B: 每个最小的 IO 单位能装载多少条记录
- M: 每个 Bloom Filter 有多少 bits
- N: 每个 BloomFilter 生成时用了多少条 Key
- S:区间查询的记录数量
-
level
-
Write
- 每条记录抵达最底层需要经过 L次 Compact,每次 Compact Ln 的一个小 SST 和 Ln+1 的一个大 SST。
- 设小 SST 的大小为 1,那么大 SST 的大小则为 T,合并开销是 1+T,换言之将1单位的 Ln 的 SST 推到 Ln+1 要耗费 1+T 的 IO ,单次 Compact 写放大为 工。每条记录的写入成本为 1/B 次最小单位 IO。
- O(Write Level) = LT1/B=T*L/B
-
Point Lookup
- 对于每条 Key,最多有 L个重叠的区间。
- 每个区间都有 BloomFiter,失效率为 e^(-M/N),只有当 BloomFlter 失效时才会访问下一层。
- O(PointLookup_Level) = L * e^(-M/N)
- 注意,这里不乘 1/B 系数的原因是写入可以批量提交拉低成本,但是读取的时候必须对齐到最小读取单元尺寸。
-
-
Tier
-
Write
- 每条记录抵达最底层前同样要经过 L次 Compact,每次 Compact Ln 中T个相同尺寸的 SST放到 Ln+1。
- 设 SST 大小为 1,那么 T个 SST Compact 的合并开销是T,换言之将T单位的 Ln 的 SST 推到 Ln+1 要耗费T的 IO,单次 Compact 的写放大为T/T=1。每条记录的写入成本为 1/B 次最小单位 IO。
- O(Write Tier) = L 11/B =L/B
-
Point Lookup\
- 对于每条 Key,有L层。
- 每层最多有 工个重叠区间的 SST,对于整个 SST 来说有T*L 个可能命中的 SST,乘上 BloomFilter 的失效率,e^(-M/N),可得结果。
- O(PointLookup_Tier) = LTe^(-M/N) = TLe^(-M/N)
- 注意,这里不乘 1/B 系数的原因是写入可以批量提交拉低成本,但是读取的时候必须对齐到最小读取单元尺寸。
-
-
-
课外:
- SuperVersion:持有MemTable/ImmemTable/SST这三部分数据并提供快照功能的组件
- BloomFliter:判断一个元素在不在集合内
- Level策略:每一层不允许有SST的Key区间重合
- Tier策略:每层允许有多个区间重合的SST
-
总结:在本节课我们学习了LSTM用来维护结构的索引树与在学校学习的b+树作为了一个区别,老师为我们讲解具体讲解的他们之间的异同,以及我们选取LSTM的理由,并具体讲解了LSTM模型算法的相关细节,但是对于那个复杂度我认为还是比较复杂的,我需要再次多次观看以及去理解他们之间的关系。