MySQL 修改数据的全链路流程

article/2025/6/18 16:20:41

MySQL 修改数据的全链路流程(InnoDB)

  • 全链路流程图
  • 关键步骤详解
    • 1. 建立连接阶段
    • 2.SQL解析与优化
    • 3. InnoDB内存操作
    • 4. 日志记录过程
    • 5. 二阶段提交(2PC)
  • 磁盘同步机制
    • 1. Redo Log刷盘策略(innodb_flush_log_at_trx_commit)
    • 2. Binlog刷盘策略(sync_binlog)
    • 3. 脏页刷新机制
  • 异常恢复流程
  • 性能优化要点
    • 1. 日志相关参数
    • 2.监控指标
  • 全链路耗时分布(示例)

全链路流程图

Client Connector BufferPool UndoLog RedoLog Binlog Disk 建立TCP连接 线程身份验证 发送UPDATE语句 检查数据页是否在内存 从磁盘加载数据页 返回数据页 alt [数据页不在内存] 记录修改前值(回滚日志) 修改内存数据页 记录物理变更(重做日志) prepare状态 记录逻辑变更 发送ack commit状态 返回执行成功 异步刷脏页 循环写日志文件 同步到磁盘 loop [后台线程处理] Client Connector BufferPool UndoLog RedoLog Binlog Disk

在这里插入图片描述

关键步骤详解

1. 建立连接阶段

查看当前连接

SHOW PROCESSLIST;
  • TCP三次握手建立连接
  • 线程验证(用户名/密码/IP白名单)
  • 连接池分配线程ID

2.SQL解析与优化

– 查看执行计划

EXPLAIN UPDATE users SET balance=100 WHERE id=5;
  • 语法解析器生成解析树
  • 优化器选择执行计划(是否走索引)

3. InnoDB内存操作

// 伪代码:Buffer Pool处理
if (!page_in_buffer_pool) {read_page_from_disk();
}row = find_row_in_page();
old_data = copy_row(row);  // 用于undo log
modify_row(row);           // 内存修改

4. 日志记录过程

日志类型内容示例写入时机
Undo Log把id=5的balance从200改为100修改前记录
Redo Logpage_no=3, offset=128, value=100prepare阶段
BinlogUPDATE users SET balance=100 WHERE id=5事务提交前

5. 二阶段提交(2PC)

客户端提交
Redo Log prepare
Binlog写入
Redo Log commit

磁盘同步机制

为什么Mysql不能直接更新磁盘上的数据而且设置这么一套复杂的机制来执行SQL了?
因为来一个请求就直接对磁盘文件进行随机读写,然后更新磁盘文件里的数据性能可能相当差。
因为磁盘随机读写的性能是非常差的,所以直接更新磁盘文件是不能让数据库抗住很高并发的。
Mysql这套机制看起来复杂,但它可以保证每个更新请求都是更新内存BufferPool,然后顺序写日志文件,同时还能保证各种异常情况下的数据一致性。
更新内存的性能是极高的,然后顺序写磁盘上的日志文件的性能也是非常高的,要远高于随机读写磁盘文件。
正是通过这套机制,才能让我们的MySQL数据库在较高配置的机器上每秒可以抗下几干甚至上万的读写请求

1. Redo Log刷盘策略(innodb_flush_log_at_trx_commit)

# my.cnf配置
innodb_flush_log_at_trx_commit=1  # 最安全(每次提交刷盘)

2. Binlog刷盘策略(sync_binlog)

sync_binlog=1  # 每次提交同步到磁盘

3. 脏页刷新机制

-- 查看刷页状态
SHOW ENGINE INNODB STATUS\G
  • 当脏页比例超过innodb_max_dirty_pages_pct(默认75%)时触发
  • 使用双写缓冲(Double Write Buffer)防止页断裂

异常恢复流程

graph TDA[MySQL启动] --> B{发现异常关闭标志?}B -->|是| C[进入崩溃恢复模式]B -->|否| Z[正常启动流程]C --> D[重做阶段 Redo Phase]D --> D1[从最后一个检查点LSN开始]D1 --> D2[扫描redo log文件]D2 --> D3[应用所有有效的redo记录]D3 --> D4[更新Buffer Pool中的脏页]D --> E[检查二阶段提交状态]E --> E1{Redo处于prepare状态?}E1 --是--> F[检查对应binlog]E1 --否--> G[事务已提交,跳过]   F --> F1{Binlog完整存在?}F1 -->|是| H[提交事务 XA COMMIT]F1 -->|否| I[回滚事务 XA ROLLBACK]H & I --> J[回滚阶段 Undo Phase]J --> J1[扫描undo log]J1 --> J2[回滚所有未提交事务]J2 --> J3[释放相关锁资源]J --> K[清理阶段 Purge Phase]K --> K1[清理无效undo日志]K1 --> K2[删除无用的历史版本]K2 --> K3[更新数据字典]K --> L[完成恢复]L --> M[服务可用]

在这里插入图片描述

性能优化要点

1. 日志相关参数

innodb_log_file_size=4G        # 更大的redo log文件
innodb_log_buffer_size=256M    # 增大日志缓冲区
binlog_group_commit_sync_delay=100  # 延迟组提交(微秒)

2.监控指标

-- 查看日志写入情况
SELECT * FROM performance_schema.innodb_metrics 
WHERE NAME LIKE '%log%';-- 查看脏页比例
SELECT (SELECT variable_value FROM information_schema.global_status 
WHERE variable_name='Innodb_buffer_pool_pages_dirty') / 
(SELECT variable_value FROM information_schema.global_status 
WHERE variable_name='Innodb_buffer_pool_pages_total') AS dirty_ratio;

全链路耗时分布(示例)

阶段典型耗时可优化手段
网络连接1-10ms使用连接池
SQL解析0.1-1ms避免复杂SQL
内存查找0.01-0.1ms增大Buffer Pool
日志写入0.5-5ms调整刷盘策略
磁盘同步1-10ms使用SSD

这个流程完整展示了从客户端发起到数据落盘的全过程,其中Redo Log的二阶段提交机制和WAL(Write-Ahead Logging)原则是保证ACID特性的关键设计。


http://www.hkcw.cn/article/JdeUdqNiWj.shtml

相关文章

刀郎演唱会重庆站门票即将开抢 拼手速的时候到啦!

山歌响起的地方,刀郎2025巡回演唱会重庆站将于6月21日和22日在华熙LIVE鱼洞举行。门票预售即将开启,准备好抢票吧。演出时间是2025年6月21日和22日晚上7点。票价方面,看台座位分为480元、680元、880元和1080元四个档次,内场票价为1280元。购票平台包括大麦App和携程旅行。预…

陕西有50万年前人类烤肉痕迹 烧烤印记揭示古人类生活

陕西洛南县的龙牙洞遗址距今约50万年。考古人员在该遗址发现了古人类留下的烧烤印记,包括烧得龟裂状的石块和石器上的黑色痕迹。这些痕迹是肉类烧烤时滴落的油脂形成的,成为龙牙洞人用火炙烤肉食的直接证据。责任编辑:0764

警方通报75岁老人开代步车造成事故 操作不当致2人受伤

湖北随州交警通报,6月3日8时38分,75岁的李某家驾驶一辆四轮代步电动车在曾都区聚玉街行驶时,因操作不当引发交通事故,导致2人受伤并住院治疗,但无生命危险。目前,李某家已被公安机关控制,并排除了毒驾和酒驾嫌疑。事故原因正在进一步调查中。责任编辑:0764

美防长香会对台海大放厥词意欲何为 转移负面舆情

5月31日,美国国防部长赫格塞思在新加坡香格里拉对话会上发表讲话,极力炒作所谓“中国威胁”,以逼迫盟国增加军费开支。分析人士认为,赫格塞思公开发表“强硬言论”可能是为了转移外界对其群聊泄密事件等负面舆情的注意力。中国外交部发言人回应称,台湾问题纯属中国内政,任…

两人路上说笑遭多人无端围殴 未成年施暴者被严惩

近日,四川古蔺县一位网友称,5月24日凌晨,她侄子和好友因所骑的车子打滑,在推车时说笑。路过的人听见后,误以为在嘲笑自己,于是纠集数人对她的侄子及其好友进行殴打、侮辱。侄子因此受到心理创伤,现已带孩子去接受心理治疗。6月2日,古蔺县公安局发布通报,5月24日凌晨4时…

桂林暴雨致多小区地下车库被淹 积水严重引发关注

6月2日清晨,广西桂林市区遭遇持续大暴雨,导致多处低洼地带积水严重,甚至有车库被淹。一名网友发布的视频显示,一车库通道处是一个斜下坡,雨水从街头直接往下流,一辆黑色越野车试图从斜坡下面往上面行驶时被倾泻而下的大水挡在中间。视频还显示,斜坡下端的车库被涌入的大…

专访歼-10设计师和制造者们 揭秘“猛龙”背后的故事

我国自主研发的出口型战斗机——歼-10CE,最近在国际地区冲突中一战成名,引起国际军贸市场的广泛关注。这款战斗机由中国航空工业集团成都所设计、成飞制造。它是在歼-10基础上改进的一款用于出口的单发单座多用途战斗机,具有体系协同作战、强电磁对抗环境下超视距多目标攻击…

欧盟批准英意日合资开发六代机 三国合作推进新一代战机

欧洲联盟批准了英国贝宜系统公司、意大利莱奥纳多公司和日本飞机工业振兴有限公司成立合资企业,共同开发第六代战斗机。该合资企业将成为三国“全球作战空中计划”的主要承包商和系统集成商,目标是在2035年底前交付新型战机。新开发的战机将首先供意大利、英国和日本政府使用…

曝宝马计划在副驾驶位添置额外屏幕 迎合中国市场趋势

宝马正在研发新款iDrive X系统,计划在副驾驶位前方增加一块屏幕。这一举措旨在迎合中国消费者的需求,并顺应全球屏幕化仪表盘的潮流。据消息透露,宝马正开发第十代信息娱乐系统iDrive X,并考虑为前排副驾驶位安装乘客显示屏。目前尚不确定哪款车型会首先装备这项设计,但可…

街道办回应“男子拖拽女童进小巷” 嫌疑人已被控制并拘留

近日,一起“6岁女童回家被陌生男子拖进小巷”的事件引起了广泛关注。事发地在娄底市娄星区花山街道,据当地街道办透露,这名拖拽女童的男子并非该辖区居民,目前还不清楚他是否有犯罪记录。而女童一家是当地的租户。事发后,警方迅速控制了嫌疑人。目前,当地民政、妇联等部门…

李在明:若胜选将稳定处理韩中关系 外交政策或将转向务实

韩国总统大选投票将于6月3日举行。根据选前多项民调结果,共同民主党候选人李在明以明显优势领先国民力量党的金文洙和改革新党的李俊锡。2日举行的选前最后一场记者会几乎变成了李在明的“总统政策说明会”。近年来,随着国际地缘政治格局动荡加剧,韩国的战略地位日益突出。前…

卢东亮任山西省代省长 履新常务副省长后升任

6月3日,山西省第十四届人民代表大会常务委员会第二十一次会议决定,卢东亮代理山西省人民政府省长。卢东亮是第二十届中央候补委员,5月底已出任山西省委副书记。2020年5月,卢东亮担任山西省政府党组成员、副省长。2021年10月,在山西省委换届中,卢东亮当选为省委常委,并兼…

著名考古学家段鹏琦逝世 享年87岁贡献卓著

中国社会科学院考古研究所研究员、著名考古学家段鹏琦先生因病医治无效,于2025年6月2日在河南洛阳逝世,享年87岁。段鹏琦1938年出生于河南偃师,1963年毕业于北京大学历史系考古专业,同年进入中国科学院考古研究所工作。他曾任考古研究所团支部书记、汉唐考古研究室副主任、…

华为OD机试真题——生成哈夫曼树(2025B卷:100分)Java/python/JavaScript/C/C++/GO六种最佳实现

2025 B卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《生成…

郑钦文:有梦就别怕痛 勇敢追梦闪耀法网

6月2日,郑钦文在社交平台上分享了她的感悟:人都应该有梦想,有了梦想就不要害怕困难,是宝石就应该发光。她还祝所有大朋友小朋友们节日快乐,勇敢追求自己的梦想。在法网女单第四轮比赛中,郑钦文以7-6(5)、1-6、6-3战胜了世界排名第18位的萨姆索诺娃,首次晋级法网女单八强…

马斯克xAI将启动3亿美元股份出售 估值达1130亿

亿万富翁埃隆马斯克旗下的人工智能公司xAI正在进行一项价值3亿美元的股份出售交易,将公司估值定为1130亿美元。此次交易允许员工向投资者出售股份,并计划进行一轮更大规模的融资,在此轮融资中xAI将向外部投资者发行新股。这次股份出售正值马斯克从美国政府离职,重新聚焦个人…

众多山区小商户被宝洁起诉 取证一年后索赔引发争议

商洛地区众多小商店突然收到法院传票,被广州宝洁有限公司起诉侵犯其注册商标专用权。原告在2023年上门取证,并在一年多后提起诉讼,提供了单方面的鉴定报告。商户们因时间过长,进货凭证多已丢失,应诉不利。他们表示当初从批发部进货并不知道是假货,且早已不再销售这些商品…

端午经济激发假日消费新活力 民俗活动丰富多彩

端午假期,各地开展了丰富多彩的特色活动,人们沉浸式体验端午民俗,乐享假日生活。景区游人如织、特色活动层出不穷。黄河壶口瀑布迎来夏季最佳观赏期,景区特别推出“非遗+文旅”主题活动,旱地龙舟赛、壶口斗鼓等特色项目轮番上演。山西太原晋祠博物馆迎来客流高峰,景区同步…

将写的博客系统部署到云服务器

Linux系统的使用: 当前写的博客系统程序,只是部署到自己电脑上,其他用户无法访问到。 由于NAT机制的存在,IP地址被分为了内网IP和外网IP 外网IP,云武器厂商提供的一些机器 不同的局域网之间可以重复。 云服务器是…

女子路上持械打砸多辆车被捕 肇事者已被警方逮捕

6月3日,一段女子在机动车道上持械打砸多辆车的视频引起了广泛关注。事件发生在6月2日的河南洛阳伊川县诚信东街与新城大道附近。据伊川县城关街道办工作人员透露,涉事者已被警方现场逮捕,有多辆车被砸。对于肇事者的动机,伊川县政府工作人员表示公安部门仍在调查中。伊川县…