MySql sql语句执行的过程

一、一条select语句的执行过程:

       mysql 从大方面讲可以分为两部分,服务部分和存储引擎部分。
       服务部分 包括 连接器,查询缓存,解析器,预处理器,查询优化器 ,查询执行引擎。
       一条select 查询大致经过6个步奏:
       1、客户端发起请求,首先建立连接
       2、服务端会检查缓存,如果命中直接返回,否则继续
       3、服务器根据收到的sql进行解析,然后对其进行词法分析以及预处理
       4、由优化器生成执行计划
       5、调用存储引擎层api执行查询
       6、返回查询到的结果

   具体点:
    1、建立连接:mysql客户端和服务端的通信方式采用的是半双工协议   (数据双向传输但不能同时,like对讲机)。这就说明mysql简单快速,但是也限制了mysql 的性能,mysql单次传输数据包的大小可以通过参数max_allowed_packet控制,默认大小为4MB。
    2、查询缓存:连接上了以后,如果缓存是打开的,那么就会进入查询缓存阶段,可以通过命令查看缓存是否开启SHOW VARIABLES LIKE 'query_cache_type';
 缓存默认是关闭的。这是因为MySQL的缓存使用条件非常苛刻,是通过一个大小写敏感的哈希值去匹配的,这样就是说一条查询语句哪怕只是有一个空格不一致,都会导致无法使用缓存。而且一旦表里面有一行数据变动了,那么关于这种表的所有缓存都会失效。所以一般我们都是不建议使用缓存,MySQL最新的8.0版本已经将缓存模块去掉了。
    3、解析器和预处理器 :
           跳过了缓存模块之后,查询语句会进入解析器进行解析。
    4、词法解析和语法解析:
            这一步主要的工作就是检查sql语句的语法对不对,在这里,首先会把我们整个sql语句打碎,比如:select name from test where id = 1;就会比打散成8个字符,并且能识别出关键字和非关键字,然后根据sql 语句生成一个数据结构,也叫做解析树。
    5、查询优化器:

 

...待完善

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值