![原来一条select语句在MySQL是这样执行的](http://img.jiangsulong.com/220429/1953331091-0.jpg)
文章插图
看到蒋老师的第一篇文章后就收获颇丰 , 真是句句戳中痛点 。
令我记忆最深的就是为什么知道了一个个技术点 , 却还是用不好 ?不管是蒋老师所说的redis还是本系列要展开学习的MySQL 。
这是一个值得思考的问题 , 在大多数情况下 , 我们直接上百度搜索MySQL事务、MySQL索引之类的词汇 。
上述问题当然也是MySQL的几个核心问题之一 , 但如果我们都在不断地学习这些大的方面 , 我们怎么才能在学习某一个技能上有质的提升 。
借用蒋老师的话术:“很多技术人都有一个误区 , 就是只注重零散的技术 , 没有建立一个完整的知识架构 , 缺乏系统观 , 然而 , 系统观却是至关重要的 。在解决问题的时候 , 从某种意义上来说 , 拥有系统观 , 就意味着你有依据、有章法去定位并解决问题 。”
假如你对这些话也深有体会 , 那就跟咔咔一起建立一套MySQL的知识框架 , 对于这种思想也是第一次实战 , 希望大家多多提意见 。
一、从宏观的角度分析MySQL首先看一张经典图片
![原来一条select语句在MySQL是这样执行的](http://img.jiangsulong.com/220429/19533342P-1.jpg)
文章插图
这幅图估计很多人都看到过 , 也是经典之作高性能MySQL里边的 , 如果有兴趣可以先看一下电子版的(如需要电子版可联系咔咔) , 感觉自己能看进去了 , 再去买书也来的急 。
闲话少说 , 进入正题 。
上图的客户端可以直接理解为php、JAVA等 。接下来 , 你会看到连接、线程处理 。这一部分并不是MySQL所特有的 , 而且大多数客户端、服务器都具有类似的结构 。
因此 , 一般而言 , MySQL可以分为两层:Server层和存储引擎层 。
Server层主要包括连接层、查询缓存、分析器、优化器、执行器等重要模块组成 , 这一层还包含了MySQL核心Api部分 , 比如常用的格式化时间、加密等 。
存储引擎大家都很熟悉 , 因为在面试中不止一次地问过大家Innodb、Myisam存储引擎的不同 。
所以想过没有 , MySQL为什么会有这么多的存储引擎呢?
一切技术起源于当下问题 , 同样在MySQL中也不例外 。
MySQL在存储引擎这一方面的架构是插件式的 , 即可以随意切换不固定 , 而且MySQL5.5版本存储引擎已经默认为Innodb 。
二、一条SQL执行要经过多少困难?下图是咔咔之前培训时给发的资料
![原来一条select语句在MySQL是这样执行的](http://img.jiangsulong.com/220429/19533340T-2.jpg)
文章插图
图中还有一个熟悉的陌生人查询缓存模块 , 该模块在MySQL8.0中已不存在 。
关于该模块为何要被删除 , 后续的文章也将于大家交流 。
首先 , 我们将大致了解当我们执行一条SQL语句时 , 如何在这个架构图中运行 。
2-1 连接器mysql -u root -p连接数据库命令 , 在执行之后 , 你将需要输入密码 。当完成经典的TCP握手之后 , 连接器就开始发挥作用了 。
如果码错误时 , 则返回Access denied for user ‘root‘@‘localhost‘ (using password: YES , 错误编码1045 。
如果连接信息均正确 , 则此时将根据你输入的用户访问权限表来获取该用户的权限 , 此处必须清楚 , 当你登录成功后 , 即使其他人修改了你的权限 , 在这个连接未断开之前你的权限是不会发生改变的 。
当你连接完成之后 , 如果你一直不做任何事情 , 执行show processlist将会看到一个sleep , 表示空连接 。
那么你知道在MySQL中 , 如果连接成功后没有进行任何操作 , 多久会被自动中断?
可以执行show variables like 'wait_timeout';用于查看时间 。
![原来一条select语句在MySQL是这样执行的](http://img.jiangsulong.com/220429/1953332227-3.jpg)
文章插图
在MySQL中如果没有特别说明 , 那么所有的时间都是以秒为单位的 , 根据时间转换可以得知空连接持续8小时 。
2-2 查询缓存你需要注意的是 , MySQL8.0已经被取消了 , 这个问题不止说了一次了 , 特别是那些正在使用MySQL8.0以下版本的小伙伴要注意哈!当你切换到8.0时候 , 遇到这个问题不知道怎么解决 。
推荐阅读
- 原来自己可以搭建邮箱服务器发送邮件
- 超大文件传输 | 网络直连与雷电网桥
- 木槿花唯美图片,唯美意境图片
- 关羽的坐骑叫啥,关羽原来的坐骑是什么
- 薄荷|薄荷糖上为啥有个洞?是为了偷工减料?原来跟公司名有关
- Jenkins结合SpringCloud+K8S,打通微服一条龙技术讲解
- 应届生|跟应届生谈经验,跟有经验的人谈年龄,原来面试的“套路”真不少
- 服务器能承受同时在线人数原来是这么计算出来的
- Mysql注入 -- 联合注入
- 你运动了,你少吃了,结果你就是没瘦,原因原来在这......