美文网首页
Mysql 架构图

Mysql 架构图

作者: java后端领域 | 来源:发表于2020-04-21 10:01 被阅读0次

    架构图

    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讲

    相关文章

      网友评论

          本文标题:Mysql 架构图

          本文链接:https://www.haomeiwen.com/subject/gxmyihtx.html