Mysql 架构图

2020-04-21  本文已影响0人  java后端领域

架构图

image.png

其中 Server 层包括连接器、分析器、查询缓存、优化器、执行器,执行器通过API进行调用不同实现的存储引擎

连接器

负责跟客户端建立连接、获取权限、维持和管理连接

查询缓存

  1. 查询缓存指的是查询到结果,以查询语句为key,查询结果为value进行缓存起来,下次查询发现相同查询语句,就直接取缓存进行返回。
  2. 适用场景:静态数据,比如中国国家城市信息,不适合更新频繁的数据,因为更新时需要将缓存清除,更大更新的负担,不建议使用。
  3. 备注:Mysql 8.0 已经将查询缓存功能删除

分析器

分析器主要包括词法分析和语法分析

  1. 词法分析主要是识别出里面的字符串分别是什么,代表什么,比如 select 表示开始查询
  2. 语法分析是将于SQL的语句是否符合语法规则,比如 delete * from t 就会报如下错误:
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 '* from t' at line 1

优化器

优化器的工作主要是为了提升性能进行相关的优化处理,比如:

  1. 如果有多个索引时,选择哪个索引更加优,或者走二级索引还是走主键索引优等(可能在这阶段会因抽样统计信息不准导致选错索引)
  2. join 关联时,以哪个表作为基准表会性能更高等

执行器

执行器就是开始执行SQL,但是在开始执行前会检查用户的权限,通过后再调用引擎接口进行操作。举个例子:

--- 创建表
CREATE TABLE t  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 ;
-- 查询
select * from t where name = 'helloworld';
  1. 执行器调用存储引擎API获取第一行数据,判断name是否相同,如果不等,忽略,否则放在结果集里面
  2. 继续调用存储引擎API获取“下一行”,重复第一步,直到没有下一行
  3. 执行器将结果集返回给客户端

本文参考极客时间的Mysql实战45讲

上一篇 下一篇

猜你喜欢

热点阅读