MySQL 是典型的 C/S 架构,其逻辑系统架构分为 3 层 : 应用层、服务层、存储引擎层。
1. 应用层
应用层是主要包含连接处理、用户鉴权、安全管理等功能。
- 连接处理:MySQL server 从线程池分配一个线程和客户端进行连接
- 用户鉴权:MySQL 根据用户名、客户端主机地址和用户密码进行用户鉴权
- 安全管控:MySQL server 根据用户权限判断用户可执行的操作
2. 服务层
服务层是 MySQL Server 的核心层,提供 MySQL Server 数据库系统的所有逻辑功能,该层具有如下组件:
- 系统管理: 提供数据库备份和恢复、集群管理、分区、分库、分表管理等功能。
- SQL 接口:接收SQL命令并处理,得到用户需要的结果(DML 、DDL、存储过程、视图、触发器)。
- SQL 解析器:解析查询语句,对查询语句进行语法分析。
- 查询优化器:对查询语句进行优化(选择合适索引、数据读取方式)。
- 缓存:包括全局和引擎特定的缓存,提高查询的效率。
3. 存储引擎层
MySQL 提供插件式的存储引擎,其支持 InnoDB,MyISAM 等多个存储引擎。MySQL 自 5.5 版本开始默认使用 InnoDB 存储引擎,但是建表时可通过 engine 指定存储引擎。
SQL 语句在数据库框架中的执行流程:
- 应用程序发送 SQL 语句到服务端执行
- 查询缓存打开情况下,先在查询缓存中找是否有相应的查询数据,若存在,直接返回给客户端。缓存不存在时,进行查询数据库操作,具体过程如下:
- 查询优化处理,生成执行计划,这个阶段包括解析 SQL、预处理、优化 SQL 执行等步骤
- MySQL 根据执行计划完成整个查询
- 服务端返回查询结果给客户端