索引底层数据结构和算法

索引是高效、排序好的数据结构。

为什么不用hash结构,hash虽然单个快,但是范围慢;

数组结构的,查找慢,需要遍历。

二叉树结构的,如果数据是从小到大的插入就会属于单边数据,一样速度慢。

红黑树结构,虽然能够实现自动的平衡树,但是如果数据量非常大的时候,还是会出现层次特别高。

Btree结构,是提高一个节点的存储量。可以减少树的高度,提高查找速度。 

而mysql采用的是B+Tree结构,是BTree的变异,叶子节点称之为度,而度的大小一般为磁盘一次能读取的数据的大小。

(而磁盘的 寻道时间慢,磁盘旋转速度快,一般磁盘I/O次数评价索引结构的优劣)

(预读:磁盘一般会顺序向后读取一定长度的数据【页的整数倍】放入内存,计算机一般页的大小为4K)

 (B+Tree节点的大小设为一个页的大小,就可以一次读取一个页是一次I/O)

mysql的引擎是属于表结构的。而数据库锁一般为表级别的锁,页级别的锁,行级别的锁(innodb)

mysql分为MyISAM 引擎(非聚集)

主键索引和普通索引,他的索引btree叶子节点上存储的是数据的指针(数据的存值地址)。

每个索引都是一个BTree结构。

innodb引擎(主键索引是(聚集索引))

索引底层使用数据结构:B+tree

主键索引的叶子节点存储的是 索引值和行数据。

普通索引存储的主键索引。

视频资源:

链接:https://pan.baidu.com/s/19OnjT4uAWZ_FfjRjLVORnw 
提取码:r3gy 
 

猜你喜欢

转载自blog.csdn.net/qq_40680190/article/details/84238791