目录
对于MySQL而言,咱们学完了它的基础知识以及使用,但对它的原理了解的并不多,咱们学知识只看表面绝对是不行的,所以小刘今天给大家分享MySQL的架构知识,争取给大家讲明白!
逻辑架构
逻辑架构分为三个:逻辑架构图、简单执行流程、详细执行流程。
逻辑架构图
从上往下从左到右依次介绍每个模块:连接器、系统管理和控制工具、连接池、SQL接口、解析器、查询优化器、查询缓存、存储引擎。
连接器
连接器(Connectors),它这里和不同的语言中的SQL进行交互。
系统管理和控制工具
它主要是备份集群和集群管理等。
连接池
它主要用来管理连接,进行权限验证之类的。
SQL接口
它主要是接收到SQL命令(比如DDL、DML)后,返回查询的结果,也就是查询结果在这里显示。
但是接收到SQL命令后,我们需要把它变为有意义的SQL,要被系统识别出来你这个SQL要干什么,就需要对SQL语句进行解析,所以就需要解析器。
解析器
解析分为词法解析和语法解析,举例说明词法解析和语法解析。
SQL命令传到解析器后会被解析器验证和解析,先进行词法分析,分词形成select、*、from、t1,解析完成之后形成一颗语法树,在进行语法分析,分析SQL语句对不对,如果不对,说明这个SQL语句不合理。
查询优化器
SQL语句在真正执行之前,MySQL会认为你的语句不是最优的,它会对它进行优化。
怎么优化呢?
就利用查询优化器,在解析器中语法正确的SQL会传到这,其中使用explain查看的SQL语句执行计划,就是查询优化器生成的!
例如:select * from tuser where name like 'a%' and id = 1;
这句话就会进行优化,至于为什么会优化,后面会讲到,先知道就行,会变为这样的语句。
select * from tuser where name id = 1 and like 'a%';
查询缓存
MySQL会把查询的结果存起来,但它针对的不是SQL语句,而是SQL语句经过哈希后的值。如果下次有相同查询结果,就不会到Pluggable Shortage Engines储存引擎,直接在缓存中把查询结果拿出来。(现在作用不大,在新的MySQL被去掉了,不用了)
存储引擎
可插拔的存储引擎,也就是MySQL数据库提供了多种存储引擎。它就是用来存储数据的,如何为