MySql 索引数据结构--B+Tree
2021-06-26 14:21:28 8 举报
MySql 索引数据结构--B+Tree
作者其他创作
大纲/内容
28
data
3
79
磁盘块2
磁盘块7
myslq 数据文件id. name 1 teacher.MA2 teacher.zhou
磁盘块1
键值,表中记录主键
36
磁盘块4
p3
29
p1
mysql索引数据结构 --B+Tree
hash表的索引格式
数据,既表记录中除主键外的数据
缺点:无论是二叉树还是红黑树,都会因为树的深度过深而造成io次数过多,影响数据读取的效率
12
磁盘块6
35
p2
10
65
15
磁盘块3
缺点1、利用hash存储的话需要将所有的数据文件添加到内存中,比较耗费内存空间2、如果所有的查询都是等值查询,那么hash确实很快,但是实际工作中范围查询hash就不太合适了
9
选择索引的时候,选择int 还是varcharint 占用4个字节varchar根据输入的内容计算占用字节key要尽可能少的占用空间
75
B+Tree是在Btree的基础上做的一种优化,变化如下:1、B+Tree每个节点可以包含多个节点,这样做的原因有两个,第一位了降低树的高度,第二讲数据范围变为多个区间,区间越多,数据检索越快2、非叶子节点存储key,叶子节点存储key和数据3、叶子节点两两指针互相连接,顺序查询性能更高
三层B+Tree大概存储多少条记录
指针,既存储子节点地址信息
56
注意:在B+Tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点,之间是链式环结构,因此B+Tree进行两种查找运算:一种是对于主键的范围查找和分页查找,另一种是从根节点开始,随机查找。
60
17
磁盘预读
AVL(旋转、插入效率极低、深度问题)
30
二叉树的索引格式
13
5
一个磁盘块16kb一对指针和键值占用10字节数据大小占用1kb 一个磁盘块占用16条数据那么 三层大概能存储16*1024/10 * 16*1024/10 * 16 = 4千万表数据
11
39
收藏
收藏
0 条评论
回复 删除
下一页