网站首页 > 编程文章 正文
MySQL笔记 | 1.了解SQL的执行过程
系列文章目录
提示:所有文章的目录
前言
通过学习MySQL输出笔记,在系统的学习MySQL之前,先对整体架构有一个大概的了解。
提示:以下是本篇文章正文内容
一、SQL执行流程是什么?
执行流程
二、MySQL的框架有几个组件, 各是什么作用?
1.连接器
职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接
root@30aa56390615:/# mysql -h 127.0.0.1 -uroot -p123456
- 通过TCP握手之后,认证身份。
- 建立连接的过程很繁琐,使用长连接来减少创建。长时间下内存占用太大,会被强行kill。
- 通过执行 mysql_reset_connection 来重新初始化连接资源
2.查询缓存
职责:查询缓存。由于版本不同,在5.7版本和8.0版本有着明显的差别。 5.7版本下通过SQL_CACHE来看缓存
select SQL_CACHE * from yy_passenger_coupon;
而8.0之后,官方就废弃的了缓存模块
3.分析器
职责:
- 语法分析,内建解析树,按照from,join,on,where,group by等顺序。
- 出现异常需要关注use near后的内容。
- 也是在分析器阶段,进行表结构的判断。
4.优化器
职责:
- 确认索引(计算代价最小索引)
确认表的连接顺序 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的执行过程
- 通过连接器,建立连接校验权限,通过连接器管理和维持连接,避免重复连接。
- 查询缓存,减少查询成本。
- 通过分析器,建立语法分析,确定执行顺序,进行表结构校验,提前返回错误信息。
- 通过优化器,确认最低代价索引,知道要做什么
- 通过执行器,在执行最终任务,依次轮询向下获取满足条件的数据的第一条数据。
猜你喜欢
- 2024-10-09 「干货」如何进行 MySQL 用户管理?
- 2024-10-09 仅凭一条SQL,领悟MySQL的全貌(一条sql只能使用一个索引吗)
- 2024-10-09 Mysql语法基本操作(笔记)(mysql语法规范有哪些)
- 2024-10-09 好程序员Java学习路线分享MySQL目录结构
- 2024-10-09 MYSQL 登录与退出,查看当前数据库
- 2024-10-09 图解MySQL执行一条SQL的过程(mysql执行sql文件命令步骤)
- 2024-10-09 MySQL文件结构、逻辑架构及sql执行流程分析
- 2024-10-09 MySQL数据库解读之-目录结构(mysql的数据目录)
- 2024-10-09 MySQL命令总结(mysqld命令)
- 2024-10-09 kubernetes-5:mysql容器化(容器 mysql)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)