MySQL调优

本文深入探讨了MySQL的几种数据结构,包括二叉树、红黑树、B树和B+树,以及它们在数据库索引中的应用。详细讲解了MyISAM和InnoDB两种存储引擎的特点,强调了InnoDB对主键的依赖和优化。同时,讨论了不同类型的索引,如聚集索引、非聚集索引、Hash索引和联合索引的工作原理,以及索引的最左前缀原则。此外,还分析了BufferPool内存结构对数据库性能的影响。
摘要由CSDN通过智能技术生成

在这里插入图片描述

二叉树

二叉树存储索引时,单边递增退化成链表

在这里插入图片描述

查询6这条记录需要经过6次磁盘IO

缺点:元素单边递增退化成链表,性能差

在这里插入图片描述

红黑树

红黑树也叫二叉平衡树单边递增会自动平衡

查询6元素需要3次磁盘IO.

在这里插入图片描述
缺点:当数据达到几百万时,树的高度不可控,需要很多次磁盘IO, 性能低

B树

在这里插入图片描述

B+树

在这里插入图片描述
所有索引元素存在于叶子节点上

mysql底层每页存储16KB的数据

show global status like 'Innodb_page_size';

在这里插入图片描述
bigint 占8个字节 +磁盘空白空间占6个字节

16kb/(8+6)k ==1170

当bigint 作为主键索引时,可以放1170个元素
在这里插入图片描述
假设一个叶子节点占1kb
在这里插入图片描述
那么底层叶子可以放16个索引

在这里插入图片描述

1170*1170*16=21,902,400 

一颗高度为3的B+树,当所有节点放满后可以存两千万条记录。

B+树 叶子节点从左到右依次递增

在这里插入图片描述
查找过程

非叶子节点全部加载到内存,快速定位到某个节点,只需要一次磁盘IO

在这里插入图片描述
由此可知上千万的数据合理走了索引,查询速度非常快。

在这里插入图片描述

MyISAM存储引擎

在这里插入图片描述

在这里插入图片描述

表test_myisam使用的是MyISAM存储引擎, 查看其表结构

在这里插入图片描述

test_myisam.frm 存储表结构信息
test_myisam.MYD 存储表数据
test_myisam.MYI 存储表索引
select *from t where t.col=30

MYSQL底层执行步骤:

  1. 首先判断条件是否是索引字段
  2. 不是索引字段,全表扫描
  3. 是索引字段,在MYI文件上快速定位到30元素
  4. 通过索引磁盘文件地址在MYD文件快速定位到某行记录

在这里插入图片描述

InnoDB存储引擎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值