MySQL整体架构
与所有服务端软件一样,MySQL
采用的也是C/S架构
,即客户端(Client
)与服务端(Server
)架构,我们在使用MySQL
的时候,都是以客户端的身份,发送请求连接到运行服务端的MySQL
守护进程,而MySQL
服务器端则根据我们的请求进行处理并把处理后的结果返回给我们,这个过程可以简单地抽像成下面的示意图:
客户端:
在安装后MySQL
之后,在其安装目录的bin
目录下,有一个mysql
命令,这就是一般我们所说的MySQL
客户端,不过这是MySQL
官方提供的命令行客户端。一般我们工作中用的更多的是像Navicat这样的GUI
客户端
服务端:
MySQL服务端内部逻辑架构:
连接管理器
客户端与服务端之间要建立联系,通过客户端登录信息到连接管理器,连接成功后,才可以对数据库进行操作
2、查询缓存,有的话直接返回结果:
主要针对查询语句,进入的SQL语句,先到缓存中进行查找,是否有缓存,有的话,直接返回,没有的话,再往下走到解析器
3、解析器(词法与语法解析):
针对进来的SQL语句进行语法词法分析,分析是否有问题,没有问题后,走到查询优化器
4、对查询进行优化:
在查询优化器中,需对查询进行优化,例如查询时,查询的顺序不一样,会进行调整后,生成执行计划
5、生成执行计划后,到我们的执行器中
6、执行器调用API接口
将对应的SQL语句往下走
7、API接口这边,调用底层存储引擎,获取结果,也会根据具体数据存储类型进行对应的查询(存储引擎一般常用的有三种Myisam、innoDB、memery)
8、根据存储引擎存储数据类型,存储引擎操作文件系统,获取对应的数据并返回
返回至执行器时,一边将对于查询的SQL写入查询缓存中,方便下一次查询时直接调用返回,一边将结果返回至客户端