We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent a879b46 commit ed859a5Copy full SHA for ed859a5
MD/数据库-MySQL.md
@@ -76,7 +76,10 @@ https://tech.meituan.com/2014/08/20/innodb-lock.html
76
77
但B+树一个节点中可以存储很多个索引的key,且将大小设置为一个页,一次磁盘IO就能读取很多个key,且叶子节点之间还加上了下个叶子节点的指针,遍历索引也会很快。
78
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。
+B+树的高度如何计算?
80
+1. 假设主键 ID 为 bigint 类型,长度为 8 字节,而指针大小在 InnoDB 源码中设置为 6 字节,这样一共 14 字节
81
+2. 我们一个页中能存放多少这样的单元,其实就代表有多少指针,即 16384/14=1170。
82
+3. 那么可以算出一棵高度为 2 的 B+ 树,能存放 1170*16=18720 条这样的数据记录。
83
84
B与B+区别:
85
1. b+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素;
0 commit comments