Mysql索引优化和底层数据结构分析

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 数据结构可视化测试网站
1.慢sql优化—>看看是不是走了索引,比如千万级别的数据加索引效果非常好。
2.索引是帮助mysql高效获取数据排好序的数据结构
索引数据结构:
二叉树
红黑树
hash表(如果等值查询确实快,如果where col>7这样就不行了)
B-Tree
mysql索引底层默认是B+Tree(B加树)不是B-Tree(B树)不是二叉树,因为二叉树右面必须大于小于父节点,左边小于等于父节点。如果数据是递增有序的,则此时退化程了链表,所以二叉树有时会不满足业务情况
红黑树(二叉平衡树)也有点问题–查找次数少了,树的高度不断增长,随着表行数增加几百万行,红黑树高度一直增长不可控制,比如要查找红黑树20此查找才能找到,此时要20次IO操作,性能很低。
B-Tree (B树,多叉平衡树,叶子节点没有指针)对红黑树进行改造,叶节点具有相同蛇毒 叶节点的指针为空 所有索引元素不重复 节点种的数据索引从左到右递增排列,目的是让树的高度(2-4最合适)降低。
SHOW GLOBAL STATUS LIKE ‘Innodb_page_size’;–> variable_name value
Innodb_page_size 16384
B+Tree(mysql索引默认的结构,对B-Tree的改造,多叉平衡树,叶子节点有指针)
B+Tree特性:
1.非叶子节点不存储data,只存储索引(冗余),可以放更多的索引
2.叶子节点包含索引字段
3.叶子节点用指针链接,提高区间访问性能
相对于B-Tree,把data都挪到了叶子节点,非叶子节点没有任何元素,没个data代表了所在的行。如图
在这里插入图片描述
h=3时候B+Tree大概能放2千多万索引元素
在这里插入图片描述
在这里插入图片描述
innodb存储引擎的表只有两个文件.frm和.ibd两个文件

架构师技术框架脑图
https://www.processon.com/view/link/5cb6c8a4e4b059e209fbf369#map

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值