MySQL更新SQL执行,undoLog、redoLog、binLog三宝如何协同工作?

2026-04-27 22:00121阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

前言:一条update背后的血泪史

先说一句, 写代码的兄弟们,你们有没有在深夜里敲下那句update user set name='Lading' where id=1;后来啊第二天醒来发现数据库崩了?这不是玄幻,而是undo、redo、binlog三宝在暗暗作祟。

别急, 先给你来点情绪调味剂——我昨晚熬夜堪完LOL S14,Bin哥那场翻盘让我泪流满面后来啊第二天早上我的MySQL也跟着翻车, 至于吗? 日志三宝不齐全导致数据丢失。于是我决定把这段血泪写成文,让大家别再踩坑。

MySQL进阶突击系列(02)一条梗新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝

一、 客户端发起UPDATE——惊慌失措的第一步

客户端把SQL塞进网络层,MySQL的解析器像个冲锋陷阵的骑士,先把语法拆开,再交给优化器。优化器一路狂奔,把施行计划喂给存储引擎。此时你根本不知道下面的日志三宝以经开始排队等候,闹笑话。。

二、 InnoDB Buffer Pool:数据的临时避难所

所you的数据页先被拽进buffer pool——它像个巨大的地下仓库, 有啥说啥... 里面堆满了数据块、索引块,还有一摞摞待命的日志缓冲。

如guo目标行以经在buffer里 那直接上锁;不在的话,就去磁盘挑出对应页装进来染后才敢动手改值,C位出道。。

三、 undoLog——“事前预警”日志

摆烂。 改动之前,InnoDB会把旧值偷偷写进undo log这一步就像是给自己留后路:事务回滚时可依凭它把原样恢复。

注意:undo log只保存在内存里的undo buffer接着才会刷到磁盘。如guo系统突发宕机,这块缓存可嫩全军覆没,痛并快乐着。。

四、 redoLog——“事后补救”日志

新值写进buffer pool后紧接着生成redo log记录的是修改后的新值和对应的数据页地址。

阅读全文

前言:一条update背后的血泪史

先说一句, 写代码的兄弟们,你们有没有在深夜里敲下那句update user set name='Lading' where id=1;后来啊第二天醒来发现数据库崩了?这不是玄幻,而是undo、redo、binlog三宝在暗暗作祟。

别急, 先给你来点情绪调味剂——我昨晚熬夜堪完LOL S14,Bin哥那场翻盘让我泪流满面后来啊第二天早上我的MySQL也跟着翻车, 至于吗? 日志三宝不齐全导致数据丢失。于是我决定把这段血泪写成文,让大家别再踩坑。

MySQL进阶突击系列(02)一条梗新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝

一、 客户端发起UPDATE——惊慌失措的第一步

客户端把SQL塞进网络层,MySQL的解析器像个冲锋陷阵的骑士,先把语法拆开,再交给优化器。优化器一路狂奔,把施行计划喂给存储引擎。此时你根本不知道下面的日志三宝以经开始排队等候,闹笑话。。

二、 InnoDB Buffer Pool:数据的临时避难所

所you的数据页先被拽进buffer pool——它像个巨大的地下仓库, 有啥说啥... 里面堆满了数据块、索引块,还有一摞摞待命的日志缓冲。

如guo目标行以经在buffer里 那直接上锁;不在的话,就去磁盘挑出对应页装进来染后才敢动手改值,C位出道。。

三、 undoLog——“事前预警”日志

摆烂。 改动之前,InnoDB会把旧值偷偷写进undo log这一步就像是给自己留后路:事务回滚时可依凭它把原样恢复。

注意:undo log只保存在内存里的undo buffer接着才会刷到磁盘。如guo系统突发宕机,这块缓存可嫩全军覆没,痛并快乐着。。

四、 redoLog——“事后补救”日志

新值写进buffer pool后紧接着生成redo log记录的是修改后的新值和对应的数据页地址。

阅读全文