MySQL笔记 | 1.了解SQL的执行过程

系列文章目录

提示:所有文章的目录
1.了解SQL的执行过程


前言

通过学习MySQL输出笔记,在系统的学习MySQL之前,先对整体架构有一个大概的了解。


提示:以下是本篇文章正文内容

一、SQL执行流程是什么?

执行流程
在这里插入图片描述

二、MySQL的框架有几个组件, 各是什么作用?

1.连接器

职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接

root@30aa56390615:/# mysql -h 127.0.0.1 -uroot -p123456
  1. 通过TCP握手之后,认证身份。
  2. 建立连接的过程很繁琐,使用长连接来减少创建。长时间下内存占用太大,会被强行kill。
  3. 通过执行 mysql_reset_connection 来重新初始化连接资源

2.查询缓存

职责:查询缓存。由于版本不同,在5.7版本和8.0版本有着明显的差别。
5.7版本下通过SQL_CACHE来看缓存

select SQL_CACHE * from yy_passenger_coupon;

而8.0之后,官方就废弃的了缓存模块
在这里插入图片描述

3.分析器

职责:

  1. 语法分析,内建解析树,按照from,join,on,where,group by等顺序。
  2. 出现异常需要关注use near后的内容。
  3. 也是在分析器阶段,进行表结构的判断。

4.优化器

职责:

  1. 确认索引(计算代价最小索引)
    确认表的连接顺序
  2. 知道你要做什么

5.执行器

职责:执行优化器提供的要做的事,但在执行之前会先判断下权限

三、update的更新过程

在这里插入图片描述
1. 将值写入新行,更新到内存
2. 利用Redo Log和Bin Log配合进行二次提交,保证数据的一致性

1.了解Redo Log、Bin Log、Undo Log的作用

在这里插入图片描述
Redo Log:是Innodb特有的,binlog 是 MySQL 的 Server 层实现的。

问题:在update更新过程中,看到了先写入Redo Log,再写入Bin log,是否可以不要Redo Log?

答案是不能,因为 Redo Log只有InnoDB才有, BinLog 是采用追加的形式,而Redo Log是重复利用,不具备归档的能力。
他们两个来完成两阶段提交,保证数据的一致性


总结

MySQl的执行过程

  1. 通过连接器,建立连接校验权限,通过连接器管理和维持连接,避免重复连接。
  2. 查询缓存,减少查询成本。
  3. 通过分析器,建立语法分析,确定执行顺序,进行表结构校验,提前返回错误信息。
  4. 通过优化器,确认最低代价索引,知道要做什么
  5. 通过执行器,在执行最终任务,依次轮询向下获取满足条件的数据的第一条数据。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值