首页 > 数据库技术 > 详细

MySql引擎原理以及优化

时间:2021-04-02 14:51:19      阅读:27      评论:0      收藏:0      [点我收藏+]
1.索引的本质

索引是帮助MySQL高效获取数据的排好序的数据结构。
索引数据结构:
二叉树
红黑树
Hash表
B-Tree
技术分享图片

2.索引数据库解析

数据结构可视化工具usfca:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
技术分享图片
红黑树:
技术分享图片
JDK1.8以前的HashMap底层:数组+链表 JDK1.8:数组+链表+红黑树
红黑树也是一个二叉树,叫做平衡二叉树。
技术分享图片

3.B树结构详解

3.1 B-Tree

技术分享图片
页节点具有相同的深度,叶节点的指针为空
所有索引元素不重复
节点中的数据索引从左到右递增排列

3.2 B+Tree(B-Tree变种)

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

4.MyISAM存储引擎

MyISAM存储引擎文件和数据库文件是分离的(非聚集)
技术分享图片
创建表的可以选择引擎
技术分享图片
技术分享图片

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

5.InnoDB存储引擎(聚集)

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

MySql引擎原理以及优化

原文:https://blog.51cto.com/liuyj/2680194

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!