逻辑架构图

连接管理、解析与优化这些并不涉及读写表数据的组件划分到Servce层,读写表数据而是交给存储引擎层来做。通过这种架构设计,可以发现Servce层其实就是公用层,存储引擎层就是多态层,按需选择具体的存储引擎。再细想下,它和模板方法设计模式一摸一样,它们的执行流程是固定的,Servce层等于公用模板函数,存储引擎层等于抽象模板函数,按需子类实现。
Server
Server由连接器、查询缓存、分析器、优化器、执行器,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
连接器
连接器负责跟客户端建立连接、获取权限、维持和管理连接。
每个客户端连接都在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者CPU中运行。(高性能Mysql)
查询缓存
查询请求先访问缓存(key 是查询的语句,value 是查询的结果)。命中直接返回。
不推荐使用缓存,只要有对表的一个更新,就会把整张表所有查询的缓存清除(关闭缓存:参数 query_cache_type 设置成 DEMAND)。
