LSM之memtable

本文介绍LSM树中memtable的工作原理及其与磁盘驻留表的转换过程。memtable负责接收写请求并服务读请求,在达到一定条件后会被刷写到磁盘形成持久化的表文件。同时介绍了刷写过程中对读取操作的影响以及如何确保数据的一致性。

刷写memtable可以被周期性地触发,也可以通过大小阈值来触发。在其可被刷写之前,必须进行memtable切换:分配一个新的memtable,它成为所有新的写入操作的目标,而旧的memtable则变成刷写状态。这两个步骤必须被原子地执行。在其内容被完全刷写之前,被刷写的memtable仍可用于读取。在此之后,旧的memtable将被丢弃,取而代之的是一个新写入的磁盘驻留表,该表可用于读取。
LSM树的组件、它们之间的关系,以及实现它们之间转换的操作。
当前的memtable:接收写请求并服务读请求。
正在刷写的memtable:可用于读取。
磁盘上的刷写目标不:参与读取,因为其内容不完整。
已刷写的表:一旦被刷写的memtable被丢弃,就可以被用于读取。
正在被压实的表当:前正在被合并的磁盘驻留表。
已被压实的表由:已刷写的表或其他已压实的表所创建。
在这里插入图片描述
数据已经在内存中进行了排序,因此可以通过将内存驻留的内容依次写入磁盘来创建磁盘驻留表。在刷写期间,正在刷写的memtable和当前的memtable都可供读取。
在完全刷写memtable之前,其内容唯一的磁盘驻留版本储存在预写日志中。当memtable内容被完全刷写到在磁盘上时,日志可以被修剪(trim),并且保存对被刷写过的memtable进行的操作的日志段可以被丢弃。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值