InnoDB中B+树有几层

一般使1~3层,可以存储大约2千万行数据

  • InnoDB存储引擎默认最小存储单元是页,默认一个页的存储大小是16K(可以修改,通过设置参数innodb_page_size
  • InnoDB的所有数据文件(后缀为ibd的文件)它的大小始终是16K的整数倍
  • 页可以存储数据也可以存储键值+指针,在B+树叶子节点存放数据,非叶子节点存放键值+指针
  • 如果这一页存储的是非叶子节点,假设主键id为bigint类型,长度为8个字节,指针在InnoDB中是6个字节。这样一共14个字节,则一页能能存储多少个这样的单元,就代表一页能存储多少指针,即大约16384/14=1170个指针
  • 如果这一页存储的是叶子节点,假设一行记录大小为1K(实际上很多互联网业务数据记录大小通常就是1K左右),则一页可以存储16条记录。
  • 若一颗高度为2的B+树,则能存放大约1170*16=18720条记录
  • 同样,若一棵高度为3的B+树,能存放1170*1170*16=21902400。即约两千万条数据。
  • 所以InnoDB中B+树的高度一般为1~3层,就能满足千万级的数据存储
  • 在查询数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1~3次IO操作即可查找到数据。

补充:数据块的三层表示

  • disk层:最小的块单位是扇区,一个扇区512字节
  • 文件系统层:是基于disk层的。也是以块为单位,在linux中一个块是4k字节,即需要8个扇区
  • 数据库层:是基于文件系统层的,也是以块(页)为单位,以mysql为例,一个块默认16k字节。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值