mysql整体逻辑架构示意图
连接器
客户端首次连接时,会先校验用户名和密码,如果通过,则会由连接器到权限表中查询权限。之后,这个链接中的权限判断逻辑都将依赖于此时读取到的权限
因此,如果在连接完成后,管理员修改了权限,也需要重连后才会生效
mysql在执行过程中临时使用的内存是管理在链接对象中的,这些资源在链接断开的时候才释放。此问题解决方案:
- 定期断开长连接
- MySQL 5.7以后的版本,在每次执行一个比较大的操作后,执行mysql_reset_connection来重新初始化连接资源
查询缓存
MySQL8.0 版本已经将此模块整个删除
此模块不再了解
分析器
此模块负责sql语句的词法、语法分析
如下的报错就是在这个阶段校验的
mysql> elect * from t where ID=1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect * from t where ID=1' at line 1
优化器
此阶段决定了使用哪个索引;在sql语句有多表关联时,决定各个表的连接顺序
此阶段完成后,整个语句的执行方案就确定了
执行器
执行器处理select语句时的逻辑流程