连接器:
- 数据库跟客户端建立连接
- show processlist 显示MySQL数据库的连接情况
- wait_timeout 默认8小时
- 长连接 短连接
- 长连接: 连接成功后,客户端持续请求,则一直使用同一个连接
- 短连接: 每次执行完几次很少的查询就断开连接,下次查询再重新建立连接
- 建立连接比较耗费性能,但是长连接时间长了又耗费内存
- 定期断开连接,在使用了一个占用大内存的连接后,断开连接,重新连接
- 每次使用一个较大连接后,执行mysql_reset_connection重新初始化资源.
查询缓存:
- 缓存以key-value的格式存在内存中
- key sql语句
- value 值
- 查询命中缓存,直接读取缓存
- 查询缓存弊大于利,后期MySQL 8.0后取消了
分析器:
- 格式化SQL
- 校验SQL的正确性
- 如果出错,注意 use near 后面的部分
优化器:
- 判断是否使用索引
- 判断如何关联表
执行器:
- 判断用户是否有对表的执行权限,没有,报错返回
- 根据条件从数据库中获取数据返回
- 没有索引,查询全量表
- 有索引,从满足条件的第一条数据开始查询,知道直到数据不满足为止
- rows_examined 显示扫描多少行数据