数据库的写缓冲、不可变性和有序性

本文探讨了内存缓冲区如何在WiredTiger和LA树等数据结构中通过合并写入减少写放大。不可变数据结构如多组件LSM树和FD树虽然会延迟写放大,但能提升并发性和空间效率。同时,顺序性在数据存储结构如Bitcask和WiscKey中的重要性也被提及,特别是在无序存储和写时复制B树的场景下。

写缓冲

增加内存缓冲区总是对写放大有积极的影响。在像WiredTiger和LA树这样使用原地更新的数据结构中,内存缓冲区有助于通过合并多个相同页的写入来均摊它们的开销。换句话说,缓冲有助于减少写放大。

不可变数据结构

在不可变数据结构中(如多组件LSM树和FD树),缓冲具有类似的积极作用,但是以未来发生的重写为代价,这些重写发生在将数据从一个不可变的层移动到另一个不可变层时。换句话说,使用不可变性可能会将写放大延迟。同时,使用不可变性对并发性和空间放大有积极的影响,因为所讨论的大多数不可变结构使用的页是全满的。

顺序性

当使用不可变性时,除非我们也使用缓冲,否则最终会得到像Bitcask和WiscKey这样的无序存储结构(写时复制B树除外,它复制、重新排序和转移其页)。WiscKey仅将键存储在有序的LSM树中,并允许使用键索引来以键的顺序获取记录。在Bw树中,一些节点(被合并的节点)按键的顺序保存数据记录,而其余的逻辑Bw树节点的增量更新可能分散在不同的页上。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值