原创
MySQL的逻辑架构
温馨提示:
本文最后更新于 2022年02月20日,已超过 1,005 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
MySQL的架构可以分为四层:
客户端。
提供了各种语言连接客户端的方法。
服务层。
也就是上图所画的服务层,它包括了连接器、查询缓存、分析器、优化器、执行器等等。
MySQL中所有跟存储引擎打交道的都在服务层实现,比如:存储过程、触发器、视图等等。连接器:负责客户端的连接、获取用户权限、维持和管理连接。
查询缓存:MySQL执行一个查询请求之前,会先查询缓存查看之前是否执行过这条语句,如果当前SQL能够在缓存中查询到结果,就会直接返回。
更新操作比较多的表中,查询缓存的命中率十分低,因为,只要表一更新,缓存就失效了。
在MySQL8.0之后直接移除了查询缓存。
分析器:词法分析(识别关键字等等)、语法分析(判断SQL是否符合语法)
优化器:若有多个索引,决定使用哪个索引;多表join,决定表的连接顺序等等。
执行器:执行之前,判断用户对此表是否有权限,如果没有权限,则会返回没有权限的错误,反之,则调用存储引擎的接口,然后返回存储引擎执行的结果。
存储引擎层。
负责数据的存储和提取(从物理文件层中)。
常见的MySQL存储引擎如:InnoDB(MySQL5.5.5之后默认)、MyISAM、Memory等。
注意:事务是在存储引擎层实现的,而不是在服务层。这个很好理解,存储引擎有支持事务的也有不支持事务的,那事务肯定就是在存储引擎层实现了。
物理文件层。
存储真正的表数据、日志(binlog、redo log、undo log…)等。
- 本文标签: MySQL
- 本文链接: http://www.lzhpo.com/article/178
- 版权声明: 本文由lzhpo原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权