B-Tree、B+Tree以及B-link Tree

B+Tree自从发明以来就成为了各种数据库引擎的首选,虽然近些年来LSM-Tree结构的数据库如雨后春笋般涌现,但B+Tree由于其优异性能以及各场景中均衡的性能表现,依然是各数据库的首选项。

但B+ Tree也并非毫无缺点,作为一种平衡多叉树结构,其优势是在数据量大时也能保持较低的树高,因而其无论查询或者是更新其代价均较低。但树的一大弊端是在更新时会触发结构调整,这种结构调整最长可能从叶子节点延伸至根节点,而这种树结构的调整会阻塞并发的读写操作,进而导致性能衰退。因此,如何优化B+ Tree在该场景下的并发访问性能也是学术界和工业界的一个重要的研究方向。

本文对于B-Tree和B+Tree进行了一个简单的介绍,并且重点介绍了在B+Tree的基础上提出的一种称之为B-link Tree的数据结构,通过一种比较巧妙的方法优化了B+ Tree结构调整时的锁粒度,提升并发度,保持高并发下的性能稳定。

一、B-Tree和B+Tree

B-Tree是为磁盘等外存储设备设计的一种平衡查找树。因此在讲B-Tree之前先了解下磁盘的相关知识。

系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什么取什么。

InnoDB存储引擎中有页(Page)的概念,页是其磁盘管理的最小单位。InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小:

mysql> show variables like 'innodb_page_
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值