MySql引擎原理以及优化

1.索引的本质

索引是帮助MySQL高效获取数据的排好序的数据结构。
索引数据结构:
二叉树
红黑树
Hash表
B-Tree
MySql引擎原理以及优化

2.索引数据库解析

数据结构可视化工具usfca:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
MySql引擎原理以及优化
红黑树:
MySql引擎原理以及优化
JDK1.8以前的HashMap底层:数组+链表 JDK1.8:数组+链表+红黑树
红黑树也是一个二叉树,叫做平衡二叉树。
MySql引擎原理以及优化

3.B树结构详解

3.1 B-Tree

MySql引擎原理以及优化
页节点具有相同的深度,叶节点的指针为空
所有索引元素不重复
节点中的数据索引从左到右递增排列

3.2 B+Tree(B-Tree变种)

多叉平衡树
MySql引擎原理以及优化
非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
叶子节点包含所有索引字段
叶子节点用指针连接,提高区间访问的性能
MySql引擎原理以及优化
查看叶节点(默认是16K),一次加载16K:show global status line ‘Innodb_page_size‘
MySql引擎原理以及优化

4.MyISAM存储引擎

MyISAM存储引擎文件和数据库文件是分离的(非聚集)
MySql引擎原理以及优化
创建表的可以选择引擎
MySql引擎原理以及优化
MySql引擎原理以及优化

test_myisam.fm 表结构
test_myisam.MVD 数据
test_myisam.MYI 索引

5.InnoDB存储引擎(聚集)

MySql引擎原理以及优化
表数据文件本身就按B+Tree组织的一个索引接口文件
聚集索引-叶节点包含了完整的数据记录
为什么InnoDB表必须有主键,并且推荐使用整型的自增组件
为什么非主键索引结构叶子节点存储的是主键值?一致性和节省存储空间
MySql引擎原理以及优化
frm 表结构
idb 索引和数据

MySql引擎原理以及优化

上一篇:SQL Server 查看死锁进程(转)


下一篇:MySql数据库列表数据分页查询、全文检索API在crudapi系统中零代码实现