mysql存储引擎

一.一条sql语句的执行顺序

mysql的体系结构
图
整个mysql server由下列组件组成:
1.connection pool:连接池组件
2.management services & utilities: 管理服务和工具组件
3.sql interface:SQL接口组件
4.parser:查询分析器
5.optimizer:优化器
6.caches & buffers:缓冲池组件
7.pluggable stroage engines:存储引擎
8.file system:文件系统
9.files & logs: 日志系统

1.连接层connectors & connection poot:
是一些 客户端连接服务 主要完成一些类似于连接处理,授权认证及相关安全方案,
是该层引入线程池,为通过认证安全接入的客户端提供线程。
2.服务层
主要完成大多数核心服务功能,比如SQL接口,完成缓存查询,SQL分析和优化。
3.引擎层
负责MySQL中数据的存储和读取服务
4.存储层
主要讲数据存储在文件系统上,并完成与存储引擎的交互。

二.重要组件解释

查询缓存组件:
查询缓存主要用来缓存我们所执行的select语句以及该语句的结果集.
执行查询语句时,先查询缓存,MYSQL会先校验这个SQL是否执行过, 以key-value的形式缓存在内存中, key为SQL语句, value为查询出来的结果集.
查询时,如果缓存key被命中,则把value返回给客户端,如果没有命中,则执行后续操作后,把结果集缓存起来.
MYSQL不建议使用缓存, 因为如果表数据被频繁更新,那么表的所有查询缓存都会被清空,这样延长了查询时间,不利于业务.

分析器:
没有命中缓存的话,SQL语句就会经过分析器,分析器主要用来分析SQL语句是干嘛的
第一步: 词法分析,一条SQL语句有多个字符串组成,首先要提取关键字,比如select,提出查询的表.字段名,查询条件
第二步: 语法分析,主要判断输入的SQL语句是否正确,是否符合MYSQL语法.

优化器:
按照MYSQL自认为的最优方案执行SQL语句(并不一定是最优)

执行器:
当选择了执行方案后,MYSQL就准备开始执行了, 首先执行前会校验用户是否有权限,如果没有则返回错误信息,如果有则调用引擎接口,返回接口执行的结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值