博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL----极客时间
阅读量:7246 次
发布时间:2019-06-29

本文共 1391 字,大约阅读时间需要 4 分钟。

一.SQL查询语句执行流程

MySQL架构基本示意图

SQL分为Server层和存储引擎层.

Server层包括客户端,连接器,分析器,优化器,执行器;存储引擎层负责数据的存储和提取.其架构模式是插件式的,支持 InnoDB、MyISAM、Memory等多个储存引擎.最常用的是InnoDB,它从MySQL5.5.5版本开始成为了默认存储引擎.复制代码

连接器

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

连接命令:mysql -u root -p复制代码

查询缓存

MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。

如果语句不在查询缓存中,就会继续后面的执行阶段。执行完成后,执行结果会被存入查询缓存中。你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。

但是大多数情况下我会建议你不要使用查询缓存,为什么呢?因为查查询缓存往往弊大于利。

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。

分析器

  1. 词法分析:MySQL需要识别出里面的字符串分别是什么,代表什么。
  2. 语法分析:根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。

优化器

开始执行之前,要经过优化器处理.

优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。

执行器

开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如下所示 (在工程实现上,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证。查询也会在优化器之前调用 precheck 验证权限)。

mysql> select * from T where ID=10;ERROR 1142 (42000): SELECT command denied to user 'b'@'localhost' for table 'T'复制代码

如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。

比如我们这个例子中的表 T 中,ID 字段没有索引,那么执行器的执行流程是这样的:

1.调用 InnoDB 引擎接口取这个表的第一行,判断 ID 值是不是 10,如果不是则跳过,如果是则将这行存在结果集中;

2.调用引擎接口取“下一行”,重复相同的判断逻辑,直到取到这个表的最后一行。

3.执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。

转载于:https://juejin.im/post/5c6b78a1f265da2d8f472d85

你可能感兴趣的文章
阿里十年,只剩下这套Java开发体系了
查看>>
你的文案老是错别字,能不能改改?
查看>>
netty源码分析之服务端启动全解析
查看>>
js数组API--温故知新
查看>>
深入理解苹果系统(Unicode)字符串的排序方法
查看>>
为什么在Go语言中要慎用interface{}
查看>>
iOS CocoaPods简介及基本使用
查看>>
企业级无线渗透之PEAP
查看>>
Python安全编码指南
查看>>
Android 基于Zxing扫码实现(三)、从相册选取二维码
查看>>
自动化之旅--Appium
查看>>
react 第一个组件 “hello world!”
查看>>
Servlet
查看>>
前端常用类库资源
查看>>
Redis集群环境下的-RedLock(真分布式锁) 实践
查看>>
聊聊flink的CsvTableSink
查看>>
Assets xcassets中New Data Set使用说明
查看>>
产品研发人员应该具备的素质
查看>>
ArcBlock 课堂 预告 | Forge:打造属于你自己的区块链的开发框架
查看>>
牵引力教育HR透露:什么样的应聘者更容易被青睐!
查看>>