InJavaWeTrust 2020-05-30
在此简洁逻辑架构,mysql的基础逻辑架构其实和sql server很像的。
首先是客户端,发起了连接。
然后呢连接池后那一块,就是有分析器的那一块,那一块是干啥的呢。
其实我们写的语句呢,在mysql 不是这样子的,它要转换成自己的查询语句,通俗的说,我们调用的其实是api,不是真正的mysql 执行语句。
我们查询的数据中,是有块缓存的,基本上查询一条语句基本都有缓存,所以说会先去查询缓存,然后如果没有的话,那么会去查数据。
我们看到怎么有一个优化器呢?这就是mysql 自动会帮我们优化代码。听说阿里就是自己写了优化器提示性能的。
抄一段:
第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。 服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。 存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。
也是就说存储引擎才是真正的去执行读写,可见其重要性。
再盗一张图:
1.Connectors
连接者,其实就是客户端。
怎么说呢,其实mysql 和 客户端之间是有协议的,只有遵守这个协议就可以和mysql沟通,调用mysql的api。
2.Connect Pool
管理缓冲用户连接,线程处理等需要缓存的需求。
3.Management Serveices & Utilities
系统管理和控制工具。
4. SQL Interface 接受用户的SQL命令,并且返回用户需要查询的结果。
5.Parser
SQL命令传递到解析器的时候会被解析器验证和解析。
6、 Optimizer
7 、Cache和Buffer
查询缓存:主要功能是将客户端提交 给MySQL 的 Select 类 query 请求的返回结果集 cache 到内存中,与该 query 的一个 hash 值 做一个对应。
查询优化器:SQL语句在查询之前会使用查询优化器对查询进行优化。
8 、存储引擎接口
MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。
工作流程:
依然是盗图。