【mysql】执行过程,背诵版

sql执行再mysql的执行过程

1. 建立连接
  • sql通过tcp/ip发送到服务器
  • 服务器检查用户名,密码,权限
  • 创建线程处理连接

如果是sql8.0之前,select会先从缓存中查找,命中则返回,由于表结构变更会导致缓存失效,已废除

2.解析和优化
  • 词法分析:拆分成token
  • 语法分析:检查语法
  • 生成解析树

解析树是SQL语句经过解析器处理后的结构化表示形式。它就像把一句SQL语句"拆解"成一个树状的结构图

以SQL语句 SELECT name FROM users WHERE age > 18 为例,它的解析树可能大致如下:

          SELECT_STATEMENT
          /      |      \
      SELECT    FROM    WHERE
        |         |        |
      name      users     CONDITION
                             |
                           age > 18
  • 预处理器:
    • 检查表列是否存在,
    • 检查权限
    • 视图展开
  • 查询优化器:
    • 基于成本优化cbo选择最佳执行方案
    • 生成执行计划 可以通过explain查看
3.执行查询sql
  • innodb执行:
  1. 缓冲池检查,看所需数据是否在内存页
  2. 磁盘读取,没有就查磁盘
  3. 加锁,(排他锁/共享锁)
  4. 事务处理:写入undolog redolog
  5. 返回结果
4.返回结果
  • 返回客户端
  • 连接保活或者关闭

https://github.com/0voice

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值