基本架构示意图
- 分为 Server层 和 存储引擎层
- Server层:
- 涵盖大多数核心服务及所有内置函数(日期,时间,数学和加密函数)
- 所有跨存储引擎的功能,存储过程、触发器、视图等;
- 存储引擎:负责数据的存储与提取,架构模式为插件式
- InnoDB
- MyISAM
- Memory
连接器
连接器负责跟客户端建立连接、获取权限、维持和管理连接。
长连接与短链接
- 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。
- 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
- 建议尽量减少连接的动作,使用长连接;
- 长连接OOM问题:
- 原因: MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放;
- 方案:
- 定期断开重连;
- MySQL5.7以上,在执行较大的操作后,执行mysql_reset_connection来初始化连接资源;
查询缓存
- 由于查询缓存较为频繁,只要对一个表进行更新,表上所有查询缓存都会清空;
- 因此适用于涉及静态表的业务,比如系统配置表。
- 可以通过 query_cache_type 设置韦 DEMAND,关闭查询缓存;
- 可以通过 SQL_CACHE 显式指定查询缓存;
select SQL_CACHE * from T where ID=10;
- MySQL 8.0版本删除
分析器
- 词义分析->语义分析
- 语法报错
优化器
- 索引选择
- 多表查询(join),决定连接顺序;
执行器
- 判断对表有无执行查询的权限;
- 慢查询日志中 rows_examined 字段,表示语句执行扫描了多少行;