Mysql-执行流程

1. 介绍

1.1 查询

1.1.1 查询缓存

       MySQL 拿到一个查询请求后先会在查询缓存中看看是否执行过此语句,之前执行的语句会以 key-value 的形式缓存在内存中,key 是缓存的语句,value 是查询的结果。如果命中缓存则直接将结果返回,如果没有命中则继续执行后面。查询缓存默认是关闭的,Mysql8.0直接删除查询缓存

1.1.2 解析器生成解析树

(1)词法解析

       关于解析完生成的解析树类似下图,我以’select name from user_info where sex=1 and age>20’为例:

1.1.3 预处理再生成解析树

(1)预处理

     根据mysql的语法的规则进一步检查解析树的合法性,如:检查数据的表 和列是否存在,解析名字和别名的设置,还会进行权限的验证。

(2)再生成解析树

1.1.4 查询优化器

  • 选择最合适的索引;
  • 选择表扫还是走索引;
  • 选择表关联顺序;
  • 优化 where 子句;
  • 排除管理中无用表;
  • 决定 order by 和 group by 是否走索引;
  • 尝试使用 inner join 替换 outer join;
  • 简化子查询,决定结果缓存;
  • 合并试图;

1.1.5 查询执行计划

      查询最后一次查询的消耗,用以比较开销。   

1.1.6 查询执行引擎

      调用插件式的存储引擎的原子API的功能进行执行计划的执行。

1.1.7 查询数据返回结果

1.2 新增/修改/删除

2. FAQ

3. 参考资料

MySQL一条查询语句执行的具体流程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值