体系结构
About 1 min
体系结构
连接层:连接、授权认证
连接超上限:Too many connections
SHOW VARIABLES LIKE '%max_connections%'; set GLOBAL max_connections=500;
服务层
- SQL 接口
- 解析器
- 查询优化器
- 缓存
引擎层
可插拔存储引擎
实现:内存、索引和存储管理
存储层
- 系统文件
- 文件和日志
如上分类为四层分类,也可以有两层分类的方案。
- Server 层
- 连接层
- 连接器
- 服务层
- 分析器/解析器
- 优化器/查询优化器
- 执行器
- 查询缓存(MySQL8 移除,5.7 就开始建议关闭)
- 连接层
- 存储引擎层
- 引擎层
- 存储层
执行一条 SQL 查询语句,期间发生了什么?
- 连接器:建立连接,管理连接、校验用户身份;
- 查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;
- 解析 SQL,通过解析器对 SQL 查询语句进行词法分析、语法分析,然后构建语法树,方便后续模块读取表名、字段、语句类型;
- 执行 SQL:执行 SQL 共有三个阶段:
- 预处理阶段:检查表或字段是否存在;将
select *
中的*
符号扩展为表上的所有列。 - 优化阶段:基于查询成本的考虑, 选择查询成本最小的执行计划;
- 执行阶段:根据执行计划执行 SQL 查询语句,从存储引擎读取记录,返回给客户端;
- 预处理阶段:检查表或字段是否存在;将