MySQL原理解读——基础架构

MySQL原理解读——基础架构


MySQL可以大致分为Server层,和存储引擎层

Server层由Mysql AB公司开发,而存储引擎层允许由其他不同公司提供实现。虽然MySQL自带MyISAM引擎,但是它的默认引擎是InnoDB,由Innobase Oy公司开发

1、Server层

一条sql请求打到mysql之后,会先进入mysql的Server层,经过连接器->(查询缓存)->分析器->优化器->执行器

1.1、连接器

当一个请求打到MySQL时,会由MySQL的连接器接收。通俗的讲,连接器的主要作用就是校验用户名密码,赋予对应的角色权限,并管理每个连接

当建立了一个连接后,如果想要修改角色权限,需要断开重连才能生效(重新登录)

1.2、查询缓存(8.0后废除)

8.0以前,MySQL会使用一块内存作为缓存,数据结构可以简单理解为是以SQL作为key、结果集作为value的hash表。当一条查询语句执行时,SQL语句并不会解析,而会先从缓存中找对应SQL的结果集,没有缓存再执行下面的流程

8.0之后,MySQL就废除了缓存的功能,原因就是一张表的缓存数据会因为表结构、表数据的更改而被清空,对于更新频繁的表,缓存命中率更是会低的不行。这就相当于占用了一块内存,却什么也没做,还不如不要缓存

1.3、分析器

分析器总共会执行两个步骤,词法分析->语法分析

词法分析的主要任务就是把SQL中的每段字符串翻译成在MySQL中代表的含义

语法分析就是验证经过词法分析翻译的这段SQL符不符合MySQL的语法

1.4、优化器

优化器会根据一定的算法,计算出执行这条SQL可能效率最高的方案,比如索引的选择、表连接的顺序等

但优化器的优化有时会起到反作用,导致索引失效,所以有时需要根据实际情况手动优化SQL

1.5、执行器

执行器是真正执行SQL语句并发回结果的步骤

执行器在执行前会先判断当前请求有没有操作对应表的权限

最简单的查询流程,执行器会调用存储引擎提供的接口,遍历表中的每一行数据,把符合条件的行数据作为结果集返回

2、存储引擎

MySQL的存储引擎是以插件的形式运行,常见的有Memory、MyISAM、InnoDB

对于存储引擎,目前只了解了他们的一些特征

MemoryMyISAMInnoDB
支持事务NNY
支持外键NNY
空间占用
内存占用
支持数据压缩NYN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wheat_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值