Mysql内部组件结构


前言

大家好, 这里是Yve菌, 今天给大家带来一期Mysql的内部组件结构.


Mysql架构模型

大体来说, Mysql可以分为Server层和存储引擎层两部分
在这里插入图片描述

Server层

主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

连接器

客户端想要与mysql发起通信必须先和Server端建立通信连接, 而建立连接就是连接器负责, 连接器负责创立链接, 获取权限, 维持和管理连接

连接器的主要作用有两个

  1. 验证身份: 用户输入用户名密码尝试连接数据库, 在完成经典的TCP握手后, 连接器就要开始验证身份, 验证成功一旦连接建立, 即使外部修改了用户的信息也不会影响用户, 只有当下一次建立连接时才会生效
  2. 查询缓存: 建立成功之后, 就回去缓存中查询, 这个语句之前是否执行过, 执行过的语句会以key-value结构存储在缓存, 如果执行过直接返回value, 没执行过就继续执行后续操作. 大多情况缓存查询很鸡肋, 查询缓存的失效非常频繁,因为只要有一个表更新, 这个表上所有缓存都会被清除(8中已删除)

分析器

如果没有命中查询缓存, 就要开始执行真正的select语句了, 分析器会先做词法分析,也就是识别出里面的字符串是什么, 代表什么.
做完识别之后开始语法分析. 根据词法分析的结果, 语法分析器会根据语法规则判断语句是否满足Mysql语法, 之后运行成一颗语法树

优化器

经过分析器之后Mysql就知道你要做什么了, 在开始之前还要经过优化器优化. 优化器决定在有多个索引的时候决定使用哪个索引, 在join多个表的时候决定各表连接顺序. 可以通过show warning命令来查看优化后的语句

执行器

在开始执行的时候会判断是否对这张表有操作权限, 没有返回错误, 有就打开表继续执行, 打开表的时候会根据表的引擎去使用提供的接口. 至此语句执行完毕

Store层

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。也就是说如果我们在create table时不指定表的存储引擎类型,默认会给你设置存储引擎为InnoDB。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值