01&02 | SQL语句是如何执行的

Mysql基础架构:Server层和存储引擎层

在这里插入图片描述
Server层:连接器、查询缓存、分析器、优化器、执行器,涵盖所有Mysql大多数核心服务,以及所有内置的函数(日期、时间、数学&加密函数等),所有跨存储引擎的功能都是由Server层提供,包括存储过程,触发器,视图等。
存储引擎层:主要负责数据的存储及提取。

  • 连接器:连接器主要和客户端建立连接,获取权限,维持及连接管理。
  • 查询缓存:Mysql执行查询请求时会先去查询缓存,缓存是k-v结构,k是查询语句,v是对应的结果,如果在查询时命中缓存,则直接将缓存中key对应的value返回。
    大多数情况下不建议用缓存,因为mysql一旦有写请求执行,就会将缓存清空,如果写操作频繁的话,缓存基本是一个无效的状态,会一直被频繁的清空,这样还浪费mysql资源去维护此缓存,若表为不经常变更,写操作不是特别频繁的静态配置表可以选择开启缓存。缓存开关为:query_cache_type,将其值设置为DEMAND,则所有的读请求不再查询缓存。
    需要注意的是,在mysql8.0已经完全将该组件删除,也就是说8.0版本mysql不支持读缓存。
  • 分析器:分析器会解析sql语句,将对应的表名和列名映射出来,并去检验sql的语法是否正确,如果一旦发现列名表名不存在或者sql语句预发有问题时,mysql会抛出“You have an error in your SQL syntax”错误提示。
  • 优化器:该组件主要是帮我们做一些sql层面上的优化,已经帮我们选择合适的索引。
  • 执行器:执行sql,执行器会调用引擎接口,从表的第一行开始查询,判断是否满足查询语句,一直到表的末行,执行器将查询到的结果集返回给客户端,至此整个查询结束

课后问题

在这里插入图片描述

更新流程涉及到的两个重要日志模板:redo、binlog

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值