无标签
- 分类
- 数据库
- 难度
- 未设置
- 来源数
- 1
- 更新时间
- 2026/03/29 00:57
答案
经过连接、分析器、预处理器、优化器,来到执行器,执行器调用innodb接口,通过索引查找记录,如果记录存在于buffer pool当中, 直接返回,不存在则需要到磁盘中读取到buffer pool中。然后执行器判断是否需要更新,需要的话就将新值交给innodb,innodb就会开启一个事务,并记录undo log,写入buffer中,然后innodb更新数据,设置为脏页,并生成redo log,然后准备提交事务,redo log写入redo log buffer当中,并处于prepare状态,然后会生成binlog,写入binlog cache当中,最后将redo log修改为commit状态,提交事务。
相关题目(5)
什么是热点 key,如何处理?共源 1
分布式系统Redis
watch dog 机制是什么?共源 1
分布式系统并发锁Redis
Redis 如何实现分布式锁?共源 1
分布式系统锁Redis
分布式系统并发Redis
元信息
审核状态: active
关联来源: 1
来源面经题(0)
这道题目前没有手动沉淀的面经题来源。
来源(1)
Java八股(数据库).md
knowledge_noteQuestion 70: 一条update语句的执行过程是什么?
Source answer: 经过连接、分析器、预处理器、优化器,来到执行器,执行器调用innodb接口,通过索引查找记录,如果记录存在于buffer pool当中, 直接返回,不存在则需要到磁盘中读取到buffer pool中。然后执行器判断是否需要更新,需要的话就将新值交给innodb,innodb就会开启一个事务,并记录undo log,写入buffer中,然后innodb更新数据,设置为脏页,并生成redo log,然后准备提交事务,redo log写入redo log buffer当中,并处于prepare状态,然后会生成binlog,写入binlog cache当中,最后将redo log修改为commit状态,提交事务。
Reviewed answer: update语句先经过连接、解析、预处理、优化,再由执行器调用InnoDB接口查找记录;若需要更新,InnoDB会开启事务、记录undo log、修改内存页并标记脏页、生成redo log;提交阶段先把redo log置为prepare,再写binlog,最后把redo log置为commit并提交事务。