博客1
MySQL逻辑架构整体分为三层
-
最上层为客户端层,并非MySQL所独有,诸如:连接管理、授权认证、权限校验等功能均在这一层处理。
-
MySQL大多数核心服务均在中间这一层,包括查询解析、优化、执行、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。
-
最下层为存储引擎,其负责 MySQL 中的数据存储和提取。和 Linux 下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。
连接层
连接层主要负责连接管理、授权认证、权限校验等功能。
-
连接管理:
负责客户端与 MySQL 服务器之间的连接建立、维护和终止。客户端发起连接请求,MySQL 服务器接收到请求;每个客户端连接对应服务器上的一个线程,服务器利用线程池来管理这些连接,避免频繁创建和销毁线程,提高效率;当客户端请求断开连接时,服务器会关闭相应的线程,释放资源;
-
身份认证:
在客户端输入连接命令(如 mysql -uxxx -pxxx)后,连接层的第一步是进行身份验证。通过用户名和密码进行认证,确保只有授权用户才能访问数据库。还支持 SSL 证书认证,提供更高级别的安全性,确保数据在传输过程中不被窃取。认证成功后,服务器会加载用户的权限信息。
-
权限校验:
登录后,连接层会检查用户是否有执行特定操作的权限。这包括对数据库、表和其他资源的访问控制,确保用户只能访问其权限范围内的数据。如果权限不足,服务器会拒绝该请求,并返回相应的错误信息。
-
比如输入的 mysql -uxxx -pxxx 之后,来到MySQL的第一件事就是校验身份,权限等。每个客户端连接都对应着服务器上的一个线程。服务器上维护了一个线程池,避免为每个连接都创建销毁一个线程。当客户端连接到 MySQL 服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过 SSL 证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。
服务层
- 认证成功过后,接下来就来到服务层了,服务层是 MySQL 的核心,MySQL 的核心服务层都在这一层,包括要执行的任何 SQL 语句,普通的 DDL