Mysql架构以及运行顺序

基本架构图

 Mysql主要分为Server层和存储引擎层两个部分

  • Server层包括:连接器,查询缓存,分析器,优化器,执行器;
  • 存储引擎层:主要用来做数据存储和提取,并且家都是插件式的,支持InnoDB MyISAM等多个存储引擎。

接下来是具体的执行步骤:

  • 连接器:

        连接器主要负责于客户端进行连接,获取权限,维持和管理连接。

        一般是当用户密码认证确认后,连接器回到权限里面查询出你拥有的权限,之后的操作都会依赖此时读到的权限

  • 查询缓存(MySQL8.0版本查询缓存功能移除) :

        首先是MySQL拿到查询请求后,会先到查询缓存检查,之前是否执行过,如果执行过就会将执行的语句和结果以key-value(key是查询的语句,calue是查询的结果)键值对的形式,被直接缓存在内存中。

        如果语句不在缓存中会执行后面的执行阶段,执行结果会被存入查询缓存中。如果命中查询缓存,MySQL‘不需要执行后面的复杂操作,就可以直接返回结果,效率会很高。

        但是查询缓存往往不建议使用,因为它往往弊大于利:查询缓存的失效非常频繁,只要对一个表进行更新,那么这个表中所有的查询缓存都会被清空。因此很可能我们辛辛苦苦存起来的数据,就都被一个更新清空了。对于数据压力比较大的数据库来说,是不可取的。

  • 分析器:

        如果没有命中查询缓存,那么接下来就要进行执行语句了,首先要对SQL语句进行解析。

        分析器的作用是进行词法分析,语法分析:词法分析是指MySQl需要识别你输入的SQL语句里面的字符串分别是什么,代表什么。语法分析的作用一般是用来检查语句是否合法,或者是否满MySQL语法,如果语句不对,就会收到“You have an error in your SQL syntax”的错误提醒。

        一般的语法错误会提示第一个出现错误的位置,所以要关注的是紧接“use near”的内容。

  • 优化器:

        经过了分析器,MySQL知道你要做什么了。再开始执行之前,还要先经过优化器的处理。

        优化器是在表里面有多个索引的时候决定使用哪一个索引;或者在一个语句中有多个表关联的时候,决定各个表的连接顺序。

  • 执行器:

        MySQL通过优化器之后知道该怎么做,接下来就进入执行器阶段,开始执行语句。

        开始执行的时候,要先判断一下对这个表有没有执行的权限,如果没有,就会返回没有权限的错误。如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎去定义,去使用这个引擎提供的接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值