1.向 MySQL 发送一个请求的时候,MySQL 到底做了些什么
从数据库架构的角度:
- 连接层
1)授权认证:在真正的操作之前,还需要调用用户模块进行授权检查,来验证用户是否有权限。通过后,连接线程开
始接收并处理来自客户端的请求。
用户模块所实现的功能,主要包括用户的登录连接权限控制和用户的授权管理。它就像 MySQL 的大门守卫一样,决
定是否给来访者“开门”。
在 MySQL 中,将客户端请求分为了两种类型:一种是 query(SQL 语句),需要调用 Parser(查询解析器)才能够
执行的请求;一种是 command(命令),不需要调用 Parser 就可以直接执行的请求。
2)连接处理:客户端同数据库服务层通过连接管理模块建立 TCP 连接,并请求一个连接线程。
如果连接池中有空闲的连接线程,则分配给这个连接,如果没有,在没有超过最大连接数的情况下,创建新的连接线程负责这个客户端。
连接管理模块负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。
每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。
而连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接收客户端的命令请