焱老师带你学习MYSQL系列 第一篇 (MYSQL 整体架构)

相关系列链接

焱老师带你学习MYSQL系列 第六篇 (MYSQL是如何实现锁的)
焱老师带你学习MYSQL系列 第五篇 (MYSQL事务隔离级别是如何实现的)
焱老师带你学习MYSQL系列 第四篇 (MYSQL优化器详解)
焱老师带你学习MYSQL系列 第三篇 (MYSQL单表访问方法)
焱老师带你学习MYSQL系列 第二篇 (MYSQL 数据结构)
焱老师带你学习MYSQL系列 第一篇 (MYSQL 整体架构)

前记

我很多年前曾经面试各种大型互联网公司 , 在面试的时候不免问起MYSQL (简单问题随便 , 但复杂问题基本不会) , 很多时候问的很深 . 有一次我就问起面试官说 , 我们面试的MYSQL 知识平时真的用的到吗 ? 面试官说用得到 , 列举了很多场景 . (当面试官说用得到并且跟我列举用到的场景的时候 , 我就开始狂补MYSQL 知识)
等我也进入大型互联网公司之后 , 常见的会碰到以下问题 比如
1 . 对于线上 我们如何查看表 , 索引 , 字段等信息 ? (考察对MYSQL 系统变量了解程度)
2 . 为什么MYSQL军规要求 varchar 尽量别超过 255 ? (考察行格式数据结构)
3 . 为什么我设置索引了但索引未生效 ? (考察MYSQL优化器 优化器过程)
4 . 各种事务隔离级别是怎么实现的以及如何针对SQL语句设置合理的事务隔离级别 ( MVCC 以及锁 )
5 . 为什么一条 SQL 执行慢 以及对应解法 (考察explain 以及 连接转化)

等等常见问题
那么问题很多 , 下面就由焱老师带着你遨游在MYSQL的海洋里 , 领略前人的智慧 , 揭开MYSQL的神秘面纱 !!! 也欢迎各位同行前来不吝赐教
(本MYSQL系列适用于有一点点基础的同学 , 比如 对于MYSQL 关键字 以及MYSQL 常见的定义不清楚 请先了解相关内容)

问题

我们做事情 , 不是为了做而做 . 知识同样是这样 .
在我们在MYSQL中输入 (select * from dual) MYSQL内部都做了哪些事情 ?
本章内容主要解决MYSQL架构以及上面的问题 .

MYSQL 架构图

二话不说 先上图 .
MYSQL整体架构图
从图中 可以看出 大致分为这么几层 :

1 . 连接层

负责客户端与MYSQL 服务器连接 (比如 我在代码里面生成一行select * from dual 字符串 是如何发送到MYSQL服务器的) . 此层位于客户端中 并且多跟他的上游ORM框架连同使用 .

2 . 服务层

服务层是大多数的核心服务功能 . 主要包括 连接器、查询缓存、分析器、优化器、执行器等 .

2 . 1 连接器

负责跟客户端建立连接、获取权限、维持和管理连接。 (MYSQL Unix使用的是Unix Socket协议 windows使用的是Memory协议)
上面两种协议本质是都是TCP/IP协议 所以需要3次握手 因此才引出了各种类似于druid中间件 (提前创建好socket套接字 类似于长链接 传输数据)
大家如果对上面的网络知识稍显陌生 我之后会出网络专题 体统的给大家讲一下 当我们输入一个URL 针对客户端 / 服务端 / 运营商 都发生什么了 (学完网络之后 你会对 路由器 以及各种RPC框架 或者 各种网络中间件 产生一个系统的认知) .
所以 各位老铁 跟我一起举起双手 点波关注不迷路 !!!

2 . 2 分析器

词法分析,检查是否有语法错误。

2 . 3 优化器

生成执行计划,选择索引,join方式等。(!!! 此中间件是重点中的重点 之后我会详细出专题mysql是如果做优化的以及选择索引的)

2 . 4 执行器

判断表的操作权限。
操作存储引擎提供的接口,读写数据,索引等

2 . 5 缓存

针对MYSQL 8.0版本 之前有数据缓存 , 但由于命中概率极其低 , 在8.0版本被废除 .

3 . 引擎层

存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存
储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。

4 . 存储层

数据存储层, 主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

MYSQL 执行流程

老规矩 先上图 !!!
在这里插入图片描述
连接管理 映射的 2 . 1 连接器 .
查询缓存 映射的 2 . 5 缓存 .
语法解析 映射的 2 . 2 分析器 .
查询优化 映射的是 2 . 3优化器 .
优化器之后会那个SQL 去执行 . 就是 2 . 4 执行器 .

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值