SQL语句是怎样执行的

MySQL的架构

MySQL架构

  1. 连接器:用于验证用户登录
  2. 查询缓存:执行查询语句时,先会在查询缓存中(8.0移除)
  3. 分析器:分析SQL用于增删改还是查以及语法是否正确
  4. 优化器:对SQL语句进行优化
  5. 执行器:执行SQL,并从SQL引擎返回数据
  6. 存储引擎:插件式,可选择,默认是InnoDB。

实例


查询

如:

select * from user where name = '张三';
  1. 先检查该语句是否有权限,如果没有,返回错误;之后查询缓存,是否执行过此查询语句。
  2. 分析器对语句进行分析,判断语法是否有误
  3. 优化器对语句进行优化,按照MySQL认为最优的方案确定执行计划
  4. 验证权限,如果有权限就调用SQL引擎接口,并返回引擎执行结果
更新

更新语句如:

update user set age = 1000 where name = '张三';
  1. 此语句执行修改前,会先查询,也会用到查询缓存。
  2. 获取到这条数据,将age改为1000
  3. InnoDB将这行数据保存在内存中,redo log记录并进入准备状态(准备提交),通知执行器(执行)
  4. 执行器收到通知后,先记录binlog,提交完成后通知redo log已经完成,redo log记录
  5. 更新完成

redo log是InnoDB自带的,binlog是MySQL的日志模块。
InnoDB通过redo log实现事务
InnoDB的两阶段提交保证了数据一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值