01.Mysql逻辑架构
mysql逻辑架构图

MySQL从架构角度可以分为:
Server层
:- 该层实现所有跨存储引擎的功能。e.g. 存储过程、触发器、视图等
连接器
:- 职责:连接器负责跟客户端建立连接、获取权限、维持和管理连接
- 查看当前的连接状态: show processlist
- 连接:
- 生命周期:一个用户成功建立tcp连接后,该连接生效直到连接断开(修改用户权限,也不会影响已经存在连接的权限)
- 长连接:连接成功后,多个请求,使用同一个连接
- 短连接:每次执行完很少的几次查询就断开连接,下次查询再重建
- MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放,如果连接长时间不释放,可能导致OOM
查询缓存
(不建议开启):- 原理:MySQL拿到一个查询请求后,会先去查询缓存查询。key 是查询的语句,value 是查询的结果。命中直接返回,否则继续后面的执行阶段。
- 不建议开启查询缓存的原因:
- 查询缓存失效非常频繁,命中率非常低(只要表有更新,则该表所有查询缓存失效)
- 除非该表是静态的配置表,改动频率非常低
分析器
(词法、语法分析):- 词法分析: 将sql 拆解成单词
- 语法分析: 根据语法规则判断sql是否满足语法要求
优化器
(优化sql,确定执行方案):- 存在多个索引时,决定使用哪个索引
- 多个表join时,决定各个表的连接顺序
- 优化器阶段完成后,这个语句的执行方案就确定下来
执行器
(检查表权限,与引擎交互):- 先权限检查,检查对这个表 T 有没有执行查询的权限
- 如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。
- 内置函数:
- 例如:
sum
、distinct
等函数
- 例如:
存储引擎层
:- 插件式设计,存储引擎层负责数据的存储和提取
- 常见的引擎:
- InnoDB
- MyISAM
- Memory
本文作者:navyum
本文链接:https://www.cnblogs.com/navyum/p/18509407
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步