
作者简介
无为,多年 MySQL DBA 工作经验,现就职于某知名互联网公司,对 MySQL、 Redis、PostgrepSQL 等主流数据库有一定了解,拥有丰富的一线运维经验。
在有关 MySQL 的面试时,是不是曾经有被问到过:一条 update 语句的生命历程是怎样的?今天就来聊聊这一面试题。
这篇文章通过这条语句进行讲解:
update test set a=5 where id = 10;
一条 SQL 语句在的执行,总的来说可以分为:Server 层和存储引擎层(本节只聊 InnoDB),下面来仔细聊聊这些过程。
1 Server 层

1.1 连接层
负责跟客户端建立连接、账号密码验证、获取权限、维持和管理连接。
1.2 分析器
在通过验证以后,分析器会对该语句分析,判断是否语法有错误等。
1.3 优化器
选择索引,生成执行计划。
1.5 执行器
根据优化器生成的执行计划,调用存储引擎 API 执行 SQL。
二 、InnoDB 引擎层

2.1 事务执行
读取数据页面
进入 InnoDB 引擎层后,首先会判断该 SQL 涉及到的数据页是否存在于 BP(buffer p

本文由资深DBA讲解,深入剖析一条`update`语句在MySQL中的执行过程,涉及Server层的连接、分析、优化和执行,以及InnoDB引擎的事务执行、事务提交与回滚,详解数据页加载、锁机制、redo/undo日志和binlog等关键环节。
最低0.47元/天 解锁文章
174万+

被折叠的 条评论
为什么被折叠?



