【MySQL修炼篇】一文讲透 MySQL 事务 ACID 背后的功臣:日志三剑客实战解析
【MySQL修炼篇】一文讲透事务ACID背后的真正功臣日志三剑客Redo Log Undo Log Binlog实战解析MySQL 能实现事务的 ACID99%的人都会背原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability但真正扛起这四个特性的是 InnoDB 的日志三剑客Redo Log重做日志—— 负责持久性Durability和崩溃恢复Undo Log回滚日志—— 负责原子性和隔离性MVCCBinlog归档日志—— 负责主从复制和时间点恢复属于Server层缺了任何一个事务都站不住脚。下面我们用最硬核的方式一步步把它们拆穿给你看。一、事务到底经历了什么—— 经典更新语句全过程updateusersetbalancebalance-100whereid1;假设 balance 原值为 1000事务开始后执行这条语句InnoDB 内部到底干了什么先把 id1 的行从磁盘读到内存Buffer Pool找到这一页检查事务隔离级别默认 REPEATABLE READ生成 ReadView在内存中把 balance 改成 900生成 Undo Log旧值 1000用于回滚和MVCC生成 Redo Log记录“把 balance 物理改成 900”把内存页标记为 Dirty Page事务提交时写 Redo Log刷到磁盘fsync→ 标记 prepare写 Binlog刷到磁盘fsync再写 Redo Log标记 commit→ 这就是传说中的两阶段提交2PC只有这三步全部落盘MySQL 才会返回客户端 OK二、日志三剑客深度拆解 实战配置1. Redo Log重做日志—— 持久性的真正守护神位置默认 ib_logfile0、ib_logfile1可通过 innodb_log_group_home_dir 修改大小innodb_log_file_size默认 48MB × 22024年后建议 1~4GB属于 InnoDB 引擎私有物理日志记录“在某个数据页上做了什么修改”核心参数实战推荐8核32G机器OLTP系统innodb_log_file_size 2G # 越大越好建议是 1小时redo日志量 innodb_log_files_in_group 2 innodb_flush_log_at_trx_commit 1 # 最安全推荐生产使用 # 1 每次commit都fsync redo log最慢最安全 # 0 每秒fsync一次快有可能丢1秒数据 # 2 每次commit写os cache每秒fsync推荐高并发场景为什么 Redo Log 能让 MySQL 这么快因为它实现了 WALWrite-Ahead Logging先写日志 → 提交成功 → 后台慢慢刷脏页Checkpoint没有 Redo Log更新必须直接刷磁盘性能直接崩。实战查看当前 redo log 使用情况showengineinnodbstatus\G------------------------LOG------------------------Log sequence number231308424592-- 当前lsnLog flushed upto231308424580-- 已刷到磁盘的lsnLastcheckpointat231300000000-- 上次checkpoint位置# 如果 Log sequence number - Last checkpoint at 接近 innodb_log_file_size 总和# 说明 redo log 快写满了会触发同步刷脏页性能下降2. Undo Log回滚日志—— 原子性 MVCC 的幕后英雄位置默认在 ibdata1 系统表空间5.7前5.7 可独立 undo tablespace逻辑日志记录旧版本数据用途两大事务回滚MVCC 多版本并发控制可重复读的核心每条更新语句都会生成 undo log保存旧值 trx_id roll_pointer查看 undo log 使用情况selectcount(*)frominformation_schema.innodb_trx;-- 当前活跃事务showvariableslikeinnodb_undo_tablespaces;-- 推荐设为 3~16实战长事务会导致 undo log 暴涨占用大量空间甚至撑爆表空间-- 危险千万别在生产这么干begin;select*frombig_tablewhereid1;-- 然后几个小时不提交......-- 这段时间所有更新这个行的语句都会生成新版本undo log 疯狂增长3. Binlog二进制日志—— 主从复制的灵魂属于 Server 层所有引擎都有MyISAM也有逻辑日志记录 SQL 语句或行变化格式三种STATEMENTSBR、ROWRBR最常用、MIXED推荐配置2025生产标配server_id 1 log_bin /data/mysql/binlog/mysql-bin binlog_format ROW # 必须是ROW expire_logs_days 14 max_binlog_size 1G sync_binlog 1 # 最安全和 redo log 一样每次commit fsync # 如果不在乎丢最后几条binlog可设为 1000配合 innodb_flush_log_at_trx_commit2 刷爆QPS binlog_rows_query_log_events ON # 便于排查问题三、崩溃恢复时三剑客如何通力合作MySQL 崩溃重启后InnoDB 会执行 Crash Recovery从 Redo Log 最后一次 Checkpoint 开始重放所有 Redo Log包括未刷盘的脏页操作对于已经 commit 但还没刷盘的事务Redo Log 有 prepare commit → 正常重做对于已经写 binlog 但没 commit 的事务Redo Log 只有 prepare → 会回滚保证一致性对于写了 commit 但没写 binlog 的事务重启后会自动提交5.7行为这就是“到底以谁为准”的终极答案redo log 的 commit 标记才是事务是否真正提交的最终标志四、生产级最佳实践总结直接抄走# my.cnf 黄金配置高并发OLTP系统2025-2026推荐 [ mysqld ] innodb_buffer_pool_size 70% 内存 innodb_log_file_size 2G innodb_log_files_in_group 2 innodb_flush_log_at_trx_commit 1 innodb_undo_tablespaces 8 log_bin /data/mysql/binlog/mysql-bin binlog_format ROW sync_binlog 1 binlog_rows_query_log_events ON server_id 1337 # 监控必开 innodb_monitor_enable all performance_schema ON五、一句话总结Redo Log保证了 DDurability—— 崩溃不丢数据Undo Log保证了 AAtomicity IIsolation/MVCCBinlog保证了主从复制和最终一致性两阶段提交保证了 Redo Log 与 Binlog 的一致性 → 真正实现 CConsistency没有这三把剑事务就是空中楼阁。重阳老哥把这篇发给你的后端兄弟们让他们彻底明白MySQL 的事务 ACID从来不是天上掉下来的而是这三份日志用命换来的看完这篇下次再有人问你“为什么 innodb_flush_log_at_trx_commit1 最安全”你直接甩他这张图就行了Redo Logprepare → Binlog → Redo Logcommit这就是 MySQL 事务的命根子。

相关新闻

GTE-Chinese-Large效果实测:在饮食类查询中识别‘清淡’≈‘少油少盐’的泛化能力

GTE-Chinese-Large效果实测:在饮食类查询中识别‘清淡’≈‘少油少盐’的泛化能力

GTE-Chinese-Large效果实测:在饮食类查询中识别‘清淡’≈‘少油少盐’的泛化能力 你有没有遇到过这种情况?想找一份清淡的食谱,在知识库或搜索引擎里输入“清淡”,结果只给你匹配那些标题里含有“清淡”二字的文章,而…

2026/7/5 16:18:44 阅读更多 →
RTX 4090高算力适配:Anything to RealCharacters 2.5D引擎显存占用监控与优化建议

RTX 4090高算力适配:Anything to RealCharacters 2.5D引擎显存占用监控与优化建议

RTX 4090高算力适配:Anything to RealCharacters 2.5D引擎显存占用监控与优化建议 1. 什么是Anything to RealCharacters 2.5D转真人引擎? 1.1 它不是普通图像编辑工具,而是专为RTX 4090定制的写实化“翻译器” 你有没有试过把一张二次元立…

2026/7/4 15:24:34 阅读更多 →
SeqGPT-560M实战教程:用Streamlit构建可交付的信息抽取SaaS原型

SeqGPT-560M实战教程:用Streamlit构建可交付的信息抽取SaaS原型

SeqGPT-560M实战教程:用Streamlit构建可交付的信息抽取SaaS原型 1. 为什么你需要一个“不胡说”的信息抽取工具? 你有没有遇到过这样的情况: 花半天时间调通了一个大模型API,把合同文本扔进去,让它提取“甲方名称”“…

2026/5/17 3:21:06 阅读更多 →

最新新闻

AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南

AutoUnipus:U校园全自动答题工具终极指南 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 面对繁重的在线学习任务,你是否还在为U校园平台的网课作业而烦恼…

2026/7/5 23:23:04 阅读更多 →
XXE漏洞深度解析:从XML外部实体注入原理到实战防御

XXE漏洞深度解析:从XML外部实体注入原理到实战防御

1. 项目概述:为什么XXE漏洞至今仍是“隐形杀手”?在Web安全领域,SQL注入、XSS这些名词大家耳熟能详,但提到XXE(XML External Entity Injection,XML外部实体注入),很多开发者甚至安全…

2026/7/5 23:19:03 阅读更多 →
开源小模型如何重构AI商业逻辑:7B参数的确定性价值

开源小模型如何重构AI商业逻辑:7B参数的确定性价值

1. 一家没做消费级产品的AI公司,凭什么拿到6.4亿美元? 你可能刚刷到这条新闻:“估值64亿美元!Mistral AI官宣6.4亿美元B轮融资”——第一反应是:又一家大模型创业公司爆了?但稍一查就会发现,它既…

2026/7/5 23:17:02 阅读更多 →
CATANet:基于内容感知Token聚合的图像超分辨率技术解析

CATANet:基于内容感知Token聚合的图像超分辨率技术解析

1. 从传统超分辨率到CATANet的技术演进图像超分辨率(Super-Resolution, SR)技术在过去十年经历了三次重大技术迭代。最早期的SRCNN开创了深度学习在超分辨率领域的应用,采用简单的三层卷积网络结构。2017年EDSR和RCAN引入残差学习和通道注意力…

2026/7/5 23:17:02 阅读更多 →
Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)

Linux命令-reject(拒绝打印任务)命令语法常用选项场景化实例1. 拒绝指定打印机2. 带原因说明拒绝3. 批量拒绝多个打印机4. 打印机故障自动处理5. 恢复打印机接受任务6. 通过 CUPS Web 接口管理7. 配合系统监控脚本查询打印队列状态最佳实践快速参考&…

2026/7/5 23:15:02 阅读更多 →
羽毛球姿态评估系统设计:基于OpenPose与局部余弦相似度的6方案对比

羽毛球姿态评估系统设计:基于OpenPose与局部余弦相似度的6方案对比

羽毛球姿态评估系统设计:基于OpenPose与局部余弦相似度的6方案对比 羽毛球运动作为一项对动作规范性要求极高的竞技项目,其姿态评估技术正成为计算机视觉领域的热点研究方向。本文将深入剖析基于OpenPose框架的六种姿态评估方案,重点解析局部…

2026/7/5 23:13:01 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻