MysqL——深入MySQL原理(架构及执行流程)

MySQL架构图

图例如下:
在这里插入图片描述
server层:
Connection Pool :连接池,负责管理持有所有的连接,采用BIO的技术,承载能力有限。此外还进行用户的鉴权,线程重用,内存检查,cache管理等等;
SQL Interface:
Parser:解析器,
Optimizer:优化器,
cache&buffer:缓存和缓冲区
插件层:各种存在的地方,可选择不同的存储引擎
文件层:数据存储的地方

MySQL存储

日志组文件:ib_logfile0和ib_logfile1 默认均为5M
表结构文件:.frm
独占表空间文件:
.ibd

MySQL执行流程

简要执行流程:

在这里插入图片描述

详细执行流程

在这里插入图片描述

存储引擎

在这里插入图片描述
只有innodb支持事务。
对于myisam来说,它存储了全表的总数记录,所以 select count(*)比较innodb要快;

SQL执行顺序

在这里插入图片描述
实际上,查询优化器不一定严格按照这种顺序因此执行顺序不太重要。

存储结构

innodb引擎默认按照主键索引的结构来存储,索引的结构采用B+树这种数据结构。
在这里插入图片描述

为什么采用B+树的存储结构?

  • 基于B+树的特性及优势,数据按照数据块来存储,每一块上可能有多条数据,当某条数据被使用了,那么有可能他前后的数据也有极大的可能被使用,直接将这一块 放入内存中,从而减少I/O的次数,极大提高了查询效率。
  • 另一方面,B+的叶子结点采用双向链表的方式串联起来,在范围查询时,借助链表指针可以轻松找到下一块的位置,不需要回溯非叶结点的索引记录;
  • 另外,基于B+树非叶结点存索引指针,叶子结点存储数据的特性,保证单表数据达到2100万极限值仍能保证查询效率;

MySQL一个页大约是16K,假设常规的表一个记录是1K,一个页大约能存储16个记录;通常情况,主键类型是big int,bing int本身占8个字节一个针指针的大小大约6个字节,一般索引页都是主键值和指针的组合,这样就是14个字节,16*1024/14=1170个数据。B+一般树三层,三层下来是1170 * 1170 * 16 = 2100000;

实战演示

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值