Skip to content

Commit ed859a5

Browse files
authored
Update 数据库-MySQL.md
1 parent a879b46 commit ed859a5

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

MD/数据库-MySQL.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ https://tech.meituan.com/2014/08/20/innodb-lock.html
7676

7777
但B+树一个节点中可以存储很多个索引的key,且将大小设置为一个页,一次磁盘IO就能读取很多个key,且叶子节点之间还加上了下个叶子节点的指针,遍历索引也会很快。
7878

79-
B+树的高度如何计算?在Linux里,每个页默认4KB,假设索引的是8B的long型数据,每个key后有个页号4B,还有6B的其他数据(参考《MySQL技术内幕:InnoDB存储引擎》P193的页面数据),那么每个页可以索引4KB/(8B+4B+6B)=227个key。在高度h=3时,s=227^3=1100万。通常来说,索引树的高度在2~4。
79+
B+树的高度如何计算?
80+
1. 假设主键 ID 为 bigint 类型,长度为 8 字节,而指针大小在 InnoDB 源码中设置为 6 字节,这样一共 14 字节
81+
2. 我们一个页中能存放多少这样的单元,其实就代表有多少指针,即 16384/14=1170。
82+
3. 那么可以算出一棵高度为 2 的 B+ 树,能存放 1170*16=18720 条这样的数据记录。
8083

8184
B与B+区别:
8285
1. b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素;

0 commit comments

Comments
 (0)