服务器处理客户端请求
mysql是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld
不论采用哪种方式进行通信,最后时限的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后在想客户端进程发送一段文本(处理结果)
Connectors
connectors,指的是不同语言中与SQL的交互。mysql首先是一个网络程序,在TCP之上定义了自己应用层的协议。所以要使用mysql,我们可以编写代码,跟mysql server建立tcp连接,之后按照其定义好的协议交互。
连接层
系统(客户端)访问服务器前,做的第一件事就是建立TCP连接。
经过三次握手建立连接成功之后,mysql服务器对tcp传输过来的账号密码做身份认证、权限获取。
为了解决tcp无限创建与tcp频繁创建销毁带来的资源耗尽、性能下降问题,mysql服务器里有专门的TCP连接池限制连接数,采用长连接模式复用TCP连接,来解决问题。
所以连接管理的职责是负责认证、管理链接、获取权限信息。
服务层
- SQL Interface:SQL接口
- 接受用户的sql命令,并且返回用户所需要查询的结果。
- mysql支持DML、DDL、存储过程、视图】触发器、自定义函数等多种SQL语言接口
- Parser:解析器
- 在解析其中对SQL语句进行语法分析、语义分析
- 在SQL命令传递到解析器的时候会被解析器验证和解析,并为其创建语法树,并根据数据字典丰富查询与法术,会验证该客户端是否具有执行该查询的操作。
- Optimizer:查询优化器
- SQL语句在语法解析之后,查询之前会使用查询优化器确定SQL语句的执行路径,生成一个执行计划
- 这个执行计划表明应该使用那些索引进行查询,表之间的连接顺序如何
- Caches&Buffers:查询缓存组件


