MySql基础架构设计图
大致上来说Mysql可以分为Server层和存储引擎两个部分。
1.server层:具有所有的内置函数(如日期,时间,数学和加密函数),还有存储过程,触发器,视图
2.存储引擎:插件式的架构模式,最常用的存储引擎是InnoDB
连接器
也就是用户连接时数据库所暴露的接口。当用户登陆时数据库会查找用户权限表中的权限,而当用户没有断开就更改权限表 则是无效的。
还有一个查询连接信息的sql
show processlist
长连接:指在连接成功后如果客户端有请求则一直使用同一个连接。
弊端:长连接积累下来会造成数据库占用内存过大,造成mysql异常重启
短链接:指连接成功后在执行率几个语句查询后就断开连接
弊端:查询比较频繁则会增多连接操作,造成系统占用
建议:使用长连接对长连接的弊端的应用方案
1.定期断开长连接,或程序里面判断执行过一个占用内存的大查询后,断开连接,之后再重连
2.在5.7以上版本使用mysql_reset_connection()来重新初始化连接资源
分析器
就是分析sql语句,假如是查询语句那么查询的是什么表什么字段。
优化器
当提交一个查询时,mysql会分析,并尝试做一些优化
有以下任务
1.选择最合适的索引
2.选择全表扫描还是走索引
3.选择表关联顺序
4.优化where语句
其中最主要的就是尽可能的使用索引
执行器
执行开始之前,会先判断是否有操作权限,若没有,会抛出相关异常。
如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。