原创

MySQL的逻辑架构

温馨提示:
本文最后更新于 2022年02月20日,已超过 844 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

MySQL的架构可以分为四层:

  1. 客户端。

    提供了各种语言连接客户端的方法。

  2. 服务层。

    也就是上图所画的服务层,它包括了连接器、查询缓存、分析器、优化器、执行器等等。
    MySQL中所有跟存储引擎打交道的都在服务层实现,比如:存储过程、触发器、视图等等。

    • 连接器:负责客户端的连接、获取用户权限、维持和管理连接。

    • 查询缓存:MySQL执行一个查询请求之前,会先查询缓存查看之前是否执行过这条语句,如果当前SQL能够在缓存中查询到结果,就会直接返回。

      更新操作比较多的表中,查询缓存的命中率十分低,因为,只要表一更新,缓存就失效了。

      在MySQL8.0之后直接移除了查询缓存。

    • 分析器:词法分析(识别关键字等等)、语法分析(判断SQL是否符合语法)

    • 优化器:若有多个索引,决定使用哪个索引;多表join,决定表的连接顺序等等。

    • 执行器:执行之前,判断用户对此表是否有权限,如果没有权限,则会返回没有权限的错误,反之,则调用存储引擎的接口,然后返回存储引擎执行的结果。

  3. 存储引擎层。

    负责数据的存储和提取(从物理文件层中)。

    常见的MySQL存储引擎如:InnoDB(MySQL5.5.5之后默认)、MyISAM、Memory等。

    注意:事务是在存储引擎层实现的,而不是在服务层。这个很好理解,存储引擎有支持事务的也有不支持事务的,那事务肯定就是在存储引擎层实现了。

  4. 物理文件层。

    存储真正的表数据、日志(binlog、redo log、undo log…)等。

本文目录