mysql请求执行流程

执行流程

  • 连接器
    1. 客户端发起一条Query请求,监听客户端的‘连接管理’接收请求
    2. 将请求转发到‘连接进/线程模块’
    3. 调用‘用户模块’来进行授权检查
    4. ‘连接进/线程’从‘线程连接池’中取出空闲的被缓存的连接线程和客户端请求对接,如果失败则创建一个新的连接请求
  • 查询缓存
    1. 检查Query语句是否完全匹配,接着再检查是否具有权限,都成功则直接取数据返回
  • 分析器
    1. 查询缓存失败,转交给‘命令解析器’,经过词法分析,语法分析后生成解析树
    2. 接下来是预处理阶段,处理解析器无法解决的语义,检查权限等,生成新的解析树
  • 优化器
    1. 如果是SELECT查询还会经由‘查询优化器’做大量的优化,生成执行计划
  • 执行器
    1. 模块收到请求后,通过‘访问控制模块’检查所连接的用户是否有访问目标表和目标字段的权限
    2. 调用‘表管理模块’,查看table cache中是否存在
    - 直接对应的表和获取锁
    - 重新打开表文件
    3. 根据表的meta数据,获取表的存储引擎类型等信息,通过接口调用对应的存储引擎处理

ps: 上述过程中产生数据变化的时候,若打开日志功能,则会记录到相应二进制日志文件中

  • 结果
    1. Query请求完成后,将结果集返回给‘连接进/线程模块’
    2. 返回的也可以是相应的状态标识,如成功或失败等
    3. ‘连接进/线程模块’进行后续的清理工作,并继续等待请求或断开与客户端的连接
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值