百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> 对于 mysql 施行流程的解析
分享文章到:

对于 mysql 施行流程的解析

发布时间:09/01 来源:未知 浏览: 关键词:

MySQL 可以分为 Server 层和储备引擎层两部分

Server 层包罗连接器、查询缓存、剖析器、优化器、施行器等,涵盖 MySQL 的大多数核 心效劳功效,乃至所有的内置函数,所有跨储备引 擎的功效都在这一层实现,比方储备历程、触发器、视图等

而储备引擎层负责数据的储备和提取。其架构模式是插件式的,支撑 InnoDB、 MyISAM、Memory 等多个储备引擎。此刻最常用的储备引擎是 InnoDB

(免费学习视频教程引荐:mysql视频教程)

我们来看一下sql的施行流程

连接器

第一步,你会先连接到这个数据库上,这时候接待你的就是连接器。连接器负责跟客户端 创立连接、猎取权限、保持和治理连接

连接完成后,假如你没有后续的动作,这个连接就处于余暇状态,你可以在 show processlist 命令中看到它

客户端假如太长时间没动静,连接器就会主动将它断开。这个时间是由参数 wait_timeout 操纵的,默许值是 8 小时

创立连接的历程平常是比力复杂的,所以在使用中要尽量减少创立连接的动作,也就是尽量使用长连接

但是全部使用长连接后,你大概会发明,有些时候 MySQL 占用内存涨得特殊快,这是因 为 MySQL 在施行历程中暂时使用的内存是治理在连接对象里面的。这些资源会在连接断 开的时候才开释

如何解决这个问题呢?你可以思考以下两种方案。

1.按期断开长连接。使用一段时间,或者程序里面推断施行过一个占用内存的大查询后, 断开连接,之后要查询再重连。

2.假如你用的是 MySQL 5.7 或更新版本,可以在每次施行一个比力大的操纵后,通过执 行 mysql_reset_connection 来从新初始化连接资源。这个历程不需要重连和从新做权限验证,但是会将连接复原到刚刚创立完时的状态

查询缓存

连接创立完成后,你就可以施行 select 语句了。施行逻辑就会来到第二步:查询缓存。 MySQL 拿到一个查询恳求后,会先到查询缓存看看,此前是不是施行过这条语句。此前 施行过的语句及其结果大概会以 key-value 对的情势,被直接缓存在内存中。key 是查询 的语句,value 是查询的结果。假如你的查询能够直接在这个缓存中寻到 key,那么这个 value 就会被直接返回给客户端

假如语句不在查询缓存中,就会连续后面的施行阶段。施行完成后,施行结果会被存入查 询缓存中。你可以看到,假如查询命中缓存,MySQL 不需要施行后面的复杂操纵,就可 以直接返回结果,这个效力会很高

但是大多数状况下不要使用查询缓存,为什么呢?由于查询缓存往往弊大于利。

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清 空。因此很大概你费力地把结果存起来,还没使用呢,就被一个更新全清空了。关于更新 压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很长时间才会更新一次

你可以将参数 query_cache_type 设定 成 DEMAND,这样关于默许的 SQL 语句都不使用查询缓存

MySQL 8.0 版本直接将查询缓存的整块功效删掉了,也就是说 8.0 开端彻 底没有这个功效了

剖析器

假如没有命中查询缓存,就要开端真正施行语句了。第一,MySQL 需要知道你要做什 么,因此需要对 SQL 语句做解析

剖析器先会做“词法剖析”。你输入的是由多个字符串和空格组成的一条 SQL 语句, MySQL 需要识别出里面的字符串离别是啥,代表什么

做完了这些识别今后,就要做“语法剖析”。按照词法剖析的结果,语法剖析器会按照语律例则,推断你输入的这个 SQL 语句可否知足 MySQL 语法

优化器

经过了剖析器,MySQL 就知道你要做什么了。在开端施行此前,还要先经过优化器的处 理。

优化器是在表里面有多个索引的时候,决议使用哪个索引;或者在一个语句有多表关联 (join)的时候,决议各个表的连接次序

优化器阶段完成后,这个语句的施行方案就肯定下来了,然后进入施行器阶段

施行器

开端施行的时候,要先推断一下你对这个表 T 有没有施行查询的权限,假如没有,就会返 回没有权限的错误

假如有权限,就翻开表连续施行。翻开表的时候,施行器就会按照表的引擎定义,去使用这个引擎供给的接口去施行

到这里server层就施行完毕 详细的引擎层逻辑我们下一篇文章停止剖析

以上就是关于 mysql 施行流程的解析的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板