一条更新语句在mysql内部执行流程
2026-01-06 10:15:09 0 举报
一条更新语句在MySQL中的执行涉及解析、优化、执行、存储等多个核心阶段。首先,语句通过词法分析和语法分析被转换成解析树,然后进入查询优化器,该阶段评估并确定最优的执行计划。接下来,优化后的查询计划在执行器中执行,这通常涉及查找和修改数据存储引擎中的相关记录。通过InnoDB这类支持事务的存储引擎,还可能涉及日志记录和锁定机制来保证数据的一致性和隔离性。
作者其他创作
大纲/内容
如果数据宕机,bufferpool里的数据还没同步到磁盘,可用redolog日志里的数据来恢复数据
redolog日志文件:预先分配好的磁盘文件,顺序写,循环写
IO线程
undo log日志文件
bufferpool缓存池xiaoyu666
8.系统空闲时,以页为单位写入磁盘
page页
3.更内存数据
储存引擎层:innodb
如果事务提交失败要回滚数据,就是通过undolog里的数据恢复的
redo log buffer
链接器:链接管理与权限校验
7.写入commit标记到redolog日志文件里该标记是为了提交事务后,redolog跟binglog数据一致性
6.准备提交事务binglog日志写入sql逻辑
client执行sqlupdate t set name='xiaoyu666' where id = 1 name字段原值为xiaoyu
2.写入更新数据的旧值便于回滚
调用引擎接口
优化器:执行计划生成,索引选择,生成最优执行计划
查询缓存:mysql8.0删除,原因:对于频繁更新的数据命中不高
磁盘ibd文件
修改的数据
分析器:词法与语法分析
4.写redolog日志
server层
binglog日志文件
执行器:依照执行计划调用存储引擎层接口
binglog主要用来恢复数据库磁盘里的数据
redolog日志顺序io写入准备提交阶段prepare
1.加载缓存数据加载id=1所在的整页数据到缓存里
redo log重做日志文件
0 条评论
下一页