写放大原理
(6 封私信) 如何理解SSD的写放大? - 知乎 (zhihu.com)
日志结构化合并树(LSM 树)
LSM 树: 与应用就地更新的传统索引结构不同,LSM 树首先缓冲内存中的所有写入,然后将它们刷新到磁盘并使用顺序 I/O 合并它们。LSM 树设计包含一系列组件 C0、C1...Ck,Ci的结构为B+树。
优点:卓越的写入性能、有界查询性能和空间利用率、可调性、简化并发控制和恢复。
就地更新结构:B+树。读取优化(存储每条记录的最新版本);更新会产生随机 I/O;索引页可能会因更新和删除而碎片化,从而降低空间利用率。
异地更新结构:LSM树。顺序 I/O(附加日志并合并);牺牲读取性能(相关记录分散在树中);需要单独的数据重组过程(压缩和GC)。
LSM 树合并策略
今天的LSM树:不可变的磁盘组件并合并成一个新的(简化并发控制和恢复);Ci可以使用任何索引结构实现,内存组件使用并发数据结构,例如跳过列表或B+树,磁盘组件使用B+树或排序字符串表(SSTables,包含数据块列表和索引块);这两种策略都将磁盘组件组织到逻辑级别(或层)中,并由大小比 T 控制。
调配合并策略:Ci+1 比 Ci 大 T 倍,导致 Ci+1 将与传入的 Ci 合并多次。查询优化,因为要搜索的组件更少。
分层合并策略:每个级别最多维护 T 个组件。当级别 L 已满时,其 T 分量将合并为水平 L+1 的新分量。写入优化,因为它降低了合并频率。(同层允许有重复)文章来源:https://www.toymoban.com/news/detail-540678.html
压缩:合并排序和写入 - >写入放大文章来源地址https://www.toymoban.com/news/detail-540678.html
众所周知的优化
- 布隆过滤器:提高磁盘组件的点查找性能。
- 分区:将磁盘组件范围分区为多个(通常是固定大小的)小分区(SSTable)。(1)将一个大组件合并操作分解为多个较小的合并操作,限制合并时间;(2) 通过仅合并具有重叠键范围的组件,优化具有顺序创建的键(无合并)或倾斜更新(减少合并范围)的工作负载
到了这里,关于Some Strategies for Reducing Write Amplification in LSM-tree的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!