0
点赞
收藏
分享

微信扫一扫

MySQL 的架构以及内部模块解析

鱼板番茄 2022-07-04 阅读 67

MySQL 的架构以及内部模块

MySQL 的架构以及内部模块解析_缓存

1 连接器

主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如

果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限。

如果账号密码不对,就会抛出 Access denied for user 的异常。

如果账号密码正确,连接器就会读取当前用户此时所拥有的的权限,值得注意的是,在

连接过程中,即使你用管理员账号修改当前用户的权限,丝毫不会影响它在本次连接的权限,

你的修改需要等到下次连接才会生效。

如果你长时间没有操作数据库,这个连接自动断开,这个时间默认是 8 小时。这个时

候你要操作数据库就必须重连。

2 查询缓存

连接建立后,执行查询语句的时候,会先查询缓存,Mysql 会先校验这个 sql 是否执行

过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。如果缓存 key 被

命中,就会直接返回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓

存起来,方便下一次调用。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有

该表的查询条件。

Mysql 查询不建议使用缓存,因为对于经常更新的数据来说,缓存的有效时间太短了,

往往带来的效果并不好,对于不经常更新的数据来说,使用缓存还是可以的,Mysql 8.0 版

本后删除了缓存的功能,官方也是认为该功能在实际的应用场景比较少,所以干脆直接删掉

了。

3 分析器

Mysql 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛的,分析器也会分为几步:

第一步,词法分析,一条 SQL 语句有多个字符串组成,首先要提取关键字,比如 select,

提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。

第二步,语法分析,主要就是判断你输入的 sql 是否正确,是否符合 mysql 的语法。

MySQL 的架构以及内部模块解析_mysql_02

4 优化器

优化器的作用就是它认为的最优的执行方案去执行(虽然有时候也不是最优),比如多

个索引的时候该如何选择索引,多表查询的时候如何选择关联顺序等

5 执行器

当选择了执行方案后,mysql 就准备开始执行了,首先执行前会校验该用户有没有权限,

如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的
结果


举报

相关推荐

0 条评论