网站首页 > 技术文章 正文
在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。
如下所示,一条普通的查询语句,你看到的是无数的用户列表信息展示出来
select * from t_user
当你点击执行这条查询指令时,你知道发生了什么吗 ???
1 第一步 建立连接
第一步,你的客户端会先连接到这个数据库上,这时候对接的就是连接器,连接器负责跟客户端建立连接、获取权限、维持和管理连接。
然后连接器根据你提供的用户名与密码信息进行校验而创建连接
2 第二步 经典查询缓存
连接建立完成后,第二步就是查询缓存。
当mysql拿到这个查询后,会先到查询缓存检查查看之前是不是执行过这条语句,如果执行过,那么会将查询语句及其结果以 key-value 对的形式缓存在内存中(key 是查询的 语句,value 是查询的结果),查询到,就直接反回结果给客户端
之所以称之为经典查询缓存,是因为MySQL 8.0 版本直接将查询缓存的整块功能删掉了,查询缓存往往弊大于利,查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。
3 第三步 分析器 分析语法
分析器先会做“词法分析”,分析关键字 如 select 、update这一类的,然后将其他字符串识别成表中的列
然后再做语法分析,结合词法的结果来进行 语法分析, 检查输入的SQL 语句是否满足 MySQL 语法
如果语法不对,就会收到“You have an error in your SQL syntax”的错误提醒,一般语法错误会提示第一个出现错误的位置,检查紧接“use near”的内容部分解决就好。
4 第四步 优化器
分析器校验SQL语法后,MySql就知道输入的SQL将要做什么,接下来就是进一步的优化,具体操作如当查询表里面有多个索引的时候,优化器决定使用哪个索引;或者在一个语句有多表关联 (join)的时候,决定各个表的连接顺序。
5 第五步 执行器
执行器是用来操作数据存储引擎的,分析器分析SQL的目标,优化器决定执行的方案,执行器负责执行职责。
- 上一篇: 浅谈mysql的查询过程
- 下一篇: MySQL数据库中,使用联表查询SQL删除重复的行
猜你喜欢
- 2024-11-19 MySQL常用的SQL提示
- 2024-11-19 MySQL 8.0-索引- 不可见索引(invisible indexes)
- 2024-11-19 数据库自学捷径-第七课 MySQL进阶-怎么提高搜索速度?索引
- 2024-11-19 Web端 SQL审核平台——Yearning Mysql
- 2024-11-19 MySQL性能管理及架构设计:SQL查询优化、分库分表
- 2024-11-19 深入浅出MySQL索引及优化分析,写出更高性能的SQL语句
- 2024-11-19 Linux运维面试sql语句
- 2024-11-19 图解MySQL:如何正确使用索引?
- 2024-11-19 看这篇就够了!MySQL 索引知识点超全总结
- 2024-11-19 SQL审核平台——Yearning Mysql
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)