【 innoDB 主键索引的B+tree高度为多高呢?】

innoDB 主键索引的B+tree高度为多高呢?

一、首先要知道数据库中一页是多少(16k)

1页是16k
每1k是1024字节

二、然后要知道B+tree的数据结构,

数据结构是:多路平衡二叉树:根节点:只存储key、指针(每个指针都会指向一页),而指针永远都会比key多一个----->叶子节点:1.所有的元素都会出现在叶子节点中并形成一个单向链表(mysql中为双向链表)2.叶子节点才会存储数据

三、知道了B+tree的数据结构后

带入第一点,一页存储16k ,1k 为1024字节,带入第二点 根节点只存储key、指针,假设key的类型bigint(8字节),mysql中一个指针占6字节,
根据以上信息,计算一个高度为2的b+tree的数据存储量,的公式为:n8+(n+1) * 6 = 102416

n 是key的个数 8是数据类型占的字节数
(n+1)是指针的个数(因为指针永远比key多一个故为n+1) 6是指针占的字节数
1024*16 总字节数 16384

问题:n 需要等于多少才能 * 8+n * 6 约等于16384呢
假设n = 1000
1000 * 8+1001 * 6 = 14006 ,这个结果接近 16384
经过多次假设最终得出以下
再假设 n &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值