MySQL 8.0 SQL 执行流程

MySQL 8.0 SQL 执行流程

首先我们先来看下 MySQL 的经典架构图,8.0 的没怎么翻到,先看看这个了。

MySQL 8.0 SQL 执行流程_第1张图片

图上有这么几个模块:

Collectos

连接器,客户端可以通过这些方式对 MySQL 服务端发起通信。

Services & utilities

Connection pool

连接池,负责连接的处理、安全和认证,比如我们的请求线程的新建、密码认证、权限获取都是由这个模块负责。这里缓存了权限,所以当你不断开连接,其他用户修改权限后,当前的连接的权限也不会改变。

SQL Interface

MySQL 的接口

Parser

语法解析器,将我们的 SQL 语句解析成相关的语法树。解析器先提取相应的关键词,然后进行语法解析,判断 SQL 是否符合相应的语法,然后生成语法树,上面拆分了 SQL 的各种成分,比如查询字段、查询表、匹配条件等。

Optimzer

优化器,将 SQL 进行优化生成多个执行计划。

执行器

上面优化器生成了多份执行计划后,接下来就由执行器选择一份计划执行了。执行器先会判断当前是否具有权限,然后才会去执行相应的 SQL 语句。

Caches

缓存命中,8.0 中已经被干掉了。作用是在每次查询时将结果缓存,然后再次查询可以加快访问速度,但是因为命中率太低,有点鸡肋所以在 MySQL 8.0已经不存在了。比如他是将 SQL 语句作为 key 进行命中匹配的,如果 SQL 中多加了一个空格也会被认为不是同一条 SQL 导致匹配不到。

Pluggable storage Engines

数据库的执行引擎插件。

文件系统

这个是存放 MySQL 的文件系统。

SQL 执行流程

SQL 流程是 SQL --> 解析器 --> 优化器 --> 执行器 --> 返回结果。

下面会将各个组件单独拉出来做分析。

更多内容请关注作者公众号或者官方网站

你可能感兴趣的:(mysql)