MySQL体系结构

MySQL被分为三层,MySQL Service层、存储引擎层和系统文件层。在MySQL Service层又包括连接层和SQL层。
在这里插入图片描述

1.连接层

应用程序通过接口(如JDBC)来连接MySQL。最先处理的就是连接层,连接层包括通信协议、线程处理、用户名密码认证三个部分。通信协议负责检查客户端版本是否兼容MySQL服务段。线程处理是指每一个连接请求都会分配一个对应的线程,相当于一条SQL对应一个线程,一个线程对应一个逻辑CPU,并会在多个逻辑CPU之间进行切换。用户名密码认证验证创建的账号和密码,以及host主机授权是否可以连接到MySQL服务器。

2.SQL层

包括权限判断、查询缓存、解析器、预处理、查询优化器、缓存和执行计划。
服务层是MySQL的核心,MySQL的核心服务层都在这一层,查询解析,SQL执行计划分析,SQL执行计划优化,查询缓存。以及跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等。通过下图来观察服务层的内部结构:
在这里插入图片描述

查询缓存
在解析查询之前,服务器会检查查询缓存,如果能找到对应的查询,服务器不必进行查询解析、优化和执行的过程,直接返回缓存中的结果集。查询缓存通过Query Cache操作,建议关闭,不稳定。
解析器与预处理器
MySQL会解析查询,并创建了一个内部数据结构(解析树)。这个过程解析器主要通过语法规则来验证和解析。比如SQL中是否使用了错误的关键字或者关键字的顺序是否正确等等。预处理会根据MySQL的规则进一步检查解析树是否合法。比如要查询的数据表和数据列是否存在等。
查询优化器
优化器将其转化成查询计划。多数情况下,一条查询可以有很多种执行方式,最后都返回相应的结果。优化器的作用就是找到这其中最好的执行计划。优化器并不关心使用的什么存储引擎,但是存储引擎对优化查询是有影响的。优化器要求存储引擎提供容量或某个具体操作的开销信息来评估执行时间。
查询引擎
在完成解析和优化阶段以后,MySQL会生成对应的执行计划,查询执行引擎根据执行计划给出的指令调用存储引擎的接口得出结果。

3.存储引擎层

存储引擎也是MySQL数据库区别与其他数据库最核心的一点。
比较常见的引擎有两个MyISAM和InnoDB
其不同之处主要有五个方面:
事务的支持:MyISAN不支持事务,InnoDB支持
锁的粒度:MyISAM表锁,InnoDB行锁
存储空间:InnoDB即缓存索引文件又缓存数据文件,MyISAM只缓存索引文件
存储结构:MyISAM数据拆分了两个文件,InnoDB存储在一个文件
统计记录行数:MyISAM保存有总行数,InnoDB没有,count(*)的消耗很大

4.系统文件层

该层主要是将数据库的数据存储在文件系统之上,并完成与存储引擎的交互。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值