B-Tree和LSM-Tree 优缺点对比

B-Tree(以及变种如B+Tree)已经存在很长时间,一直是更为主流的索引数据结构,经过更多优化,实现也更加成熟,实际上LSM-tree由于其特点,在某些场景中同样具有高吸引力。
通常来说,LSM-Tree对写入更加友好,而B-Tree通常被认为对读取更加友好。

LSM-Tree的优势

写放大
由于一次数据库写入请求导致的多次磁盘写被称为写放大,例如使用b树或者b+树时导致页分裂会增加写入开销。对于大量写密集的业务,性能瓶颈很可能在于数据库写入磁盘的速率,这种情况下,写放大具有直接的性能成本,此外,由于ssd只能承受有限次的擦出覆盖,也尤其关注写放大指标

  • LSM-tree通常能够承受比Btree更高的写入吞吐量,因为它具有更低的写放大,而且在内存落盘时,因为写入的是紧凑的SStable文件,不必重写树中的多个页,这种差异对磁盘写入十分重要,顺序写的速度远大于随机写。
  • LSM-Tree具有更低的磁盘碎片,它不是面向页的,此外定期合并SStable同样能消除碎片化

LSM-Tree的缺点

  • 压缩过程会干扰正在进行的读写操作,虽然有些压缩是增量的,并且是后台线程进行的,允许并发访问,但是由于磁盘的并发资源是十分有限的,所以容易出现读写等待的情况
  • 数据库数据量越大,压缩所需的磁盘带宽就越多
  • 如果是超高并发的场景,压缩跟不上写入速率,可能会导致磁盘上未合并的段数量不断增加,直到磁盘空间不足,这会导致数据库读性能进一步降低。为了避免这种情况出现,往往需要额外的监控程序对数据库进行监控
  • B+树(例如innodb)在使用中日志记录相同键的多个版本,能够提供更强大的事务语义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值