【04】阿里面试题:一条MySQL更新语句是如何执行的?

本文详细介绍了MySQL更新语句的执行流程,包括连接验证、查询缓存、分析器、预处理、优化器和执行器等步骤。重点讨论了binlog、redo log、undo log和buffer pool在更新过程中的作用,以及二阶段提交的原因,确保数据一致性。
摘要由CSDN通过智能技术生成

查询语句更新流程

更新流程前边和查询一样也要走一遍查询,因为更新之前必须拿到(查询)更新的数据,先上一张流程图,然后看详细阅读下面的各个步骤。

image-20230605152153195
image-20230605152153195

执行流程:

1.「连接验证」

需要MySQL客户端登录,需要一个 连接器 来连接用户和MySQL数据库,“mysql -u 用户名 -p 密码” 进行MySQL登录,在完成 TCP握手 后,连接器会根据输入的用户名和密码验证登录身份。

MySQL服务端和客户端的通信方式采用的是「半双工协议」。通信的时候,数据可以双向传输,但是同一时间只能有一台服务器在发送数据。

2.「查询缓存」

mysql8之后就去掉了查询缓存,因为太鸡肋了。当数据表发生修改时,涉及到这个表的查询缓存都会失效。这可能导致过多的缓存失效,并引发不一致的数据查询结果。

可以用过sql查看查询缓存是否开启。

SHOW VARIABLES LIKE 'query_cache_type';

3.「分析器」

语法此法分析,在这里首先会把整个sql打碎,并且能够识别关键字和非关键字,根据sql语句生成一个数据结构,也叫做解析树。

4.「预处理」

检查表名和字段名等相关信息合法性。

5.「优化器」

根据解析树生成不同的执行计划,然后选取一中最优的执行计划,哪种执行计划开销小就选择哪种。

优化器可以做哪些事情:

  1. 查询重写:将复杂的查询语句转换为等效但更简单的形式,以减少计算和存储成本。
  2. 查询优化:考虑多种执行策略和连接方式,并估计每个选择的成本,以选择最优的执行计划。
  3. 索引选择
  4. 连接顺序优化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值