MySQL浅析之架构概览

MySQL主要分为Server层,跟存储引擎层。

Server层负责“逻辑处理”,包括连接器、分析器、优化器、执行器以及所有内置函数。所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

存储引擎层跟文件系统交互,负责数据读写。可插拔式架构,支持InnoDB、MyISAM、Memory、Archive等多个存储引擎。默认使用InnoDB。

架构图如下:

在这里插入图片描述
SQL执行的过程如下:
在这里插入图片描述

连接器

负责client到server的连接管理、权限认证

client连接到server之后,连接器通过权限表查出该连接的权限。后续所有的操作权限都依赖于这此。同时,权限的更新不会影响到已经建立的连接。需要重新建立连接才能使权限变更生效。

解析器

  • 词法分析,找出关键字(比如select)跟非关键字(比如table name)。

  • 语法分析,构建语法树,判断语句的语法是否正确,。不正确时会提示:“You have an error in your SQL syntax”。

    对于语句select username, ismale from userinfo where age > 20 and level > 5 and 1 = 1的解析树如下:

在这里插入图片描述

优化器

执行计划生成,索引选择

在语句涉及到多个索引时,或者多表关联时,由优化器来决定使用哪个索引或者表之间的连接顺序以达到更高的执行效率。

执行器

操纵存储引擎来返回执行结果

对于where子句中没有涉及到索引的语句,执行器会通过存储引擎提供的接口逐行取出所有数据来判断相关数据是否符合where子句

对于where子句中涉及到非唯一索引的语句,执行器会调用存储引擎接口逐行取出所有满足该索引条件的数据进行where子句中其他条件的比对

对于where子句中涉及到唯一索引的语句,执行器会调用存储引擎接口取出一条满足该索引条件的数据进行where子句中其他条件的比对

注意,这里执行器调用存储引擎一次,引擎内部可能扫描了多行。而在满查询日志中有一个rows_examined字段。其描述的是前者,所以,这个rows_examined通常是小于等于引擎扫描的行数。

存储引擎

提供读写接口

参考

https://dev.mysql.com/doc/refman/8.0/en/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值