MySQL执行流程

客户端:PHP JAVA Navicat

服务端:

连接层:主要用于程序的连接

  1. 判断用户密码校验
  2. 校验后会分配一个线程管理这个连接
  3. 查询用户的权限=》对表的操作权限
  4. 返回连接的id

 

优化器+解析器+查询缓存=》 sql层:处理优化的sql语句,有自己的执行计划

  1. 先判断sql的语句类型(query,dml【update,insert,delete】,ddl【alter】修改表的语句),rep,status 查询表的状态
  2. 如果是query类型,判断是否开启缓存,命中缓存 ,直接返回缓存
  3. 没有命中缓存,解析器会把sql分成令牌

语法解析器:根据得到的令牌组装成对应的解析数据结构 =》where条件

优化器:根据得到的解析树=》选择合适的执行计划

  1. 获取表的结构
  2. 根据解析树过滤=》过滤没意义的查询 where 1=1
  3. 判断查询计划

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值