首页/新闻资讯/正文详情

同样是断电写了一半,为什么MySQL库毁人亡,Oracle却稳如泰山?

发布时间:2026/9/27 22:16:26 来源:云帆数科 栏目:资讯中心
同样是断电写了一半,为什么MySQL库毁人亡,Oracle却稳如泰山?
为了省一半IO关掉这个参数一次断电足以让你提桶跑路每次做数据库性能压测或者遭遇写IO瓶颈时总有人会提出一个看似能“一键起飞”的方案关掉MySQL的innodb_doublewrite双写缓冲区。毕竟刷脏页时InnoDB要先把这页写进双写文件再写进真正的.ibd文件看着就像同一份数据傻乎乎地写了两遍。把这参数一关写盘压力瞬间掉一截监控曲线别提多好看了。但在普通的ext4或xfs文件系统上这一刀砍掉的可不止是IO而是数据库的保命底线。你赌的是断电那一瞬间16KB的数据刚好能一次性安全落地。一旦赌输了重启时这页的校验和Checksum对不上redo日志也补不上去你的数据库实例可能永远都起不来了。致命诱惑一份真实的Sysbench压测数据为什么总有人想关双写因为跑分压测的诱惑实在太大了。我们来看一份标准的纯写模型oltp_write_only的Sysbench真实压测数据。在8C16G服务器配合普通NVMeSSD环境下并发128个线程狂刷脏页测试指标开启双写(ON)关闭双写(OFF)性能变化QPS14,50017,100提升~18%95%响应延迟16.2ms12.8ms下降~21%磁盘平均写IO~310MB/s~175MB/s锐减~43%看懂这组数据你就明白为什么新人总想着关掉它了。仅仅改一行配置写IO几乎腰斩QPS还能白嫖将近20%的提升。在应对双十一或大促秒杀时这种“一键起飞”的诱惑极大。但命运赠送的礼物早就在底层标好了昂贵的价格。16KB的页磁盘根本不会一次写完很多人对底层IO有个错觉以为写盘是原子性的。InnoDB默认一页是16KB。但Linux操作系统文件系统的块通常是4KB底层的磁盘扇区更小以前是512字节现在多为4KB。这意味着数据库引擎发出去的一次16KB写入到了操作系统和磁盘底层往往会被拆成连续的几次小块写入。如果正好在写到一半时机房断电或内核崩溃比如前8KB是新数据后8KB还是旧数据磁盘上的这16KB数据就变成了一个怪胎新旧掺杂。在圈子里这叫残页(torn page)。它不是数据“有点旧”而是内部物理结构彻底错乱。重启时InnoDB一算校验和立刻认定这页坏了。页头和页尾各有一份LSN日志序列号这种拼盘数据这两处根本对不齐。醒醒redo log救不了残页“不是有redo log兜底吗怕什么断电”——这是我听过最多的外行话。redo记的是“在某一页上做了什么修改”。恢复时InnoDB得先把这页从数据文件读出来这页必须是物理结构完整的才能往上补修改。完整的旧页只是LSN旧一点redo可以顺着旧LSN接着补。但残页连这个起点都不是。InnoDB绝对不会把redo硬套到一页已经拼坏的乱码上那样套出来的东西只会更灾难。一句话总结redo管的是完整页上的修改还没刷盘残页是这页本身写到一半撕裂了。这是两码事。**刷盘之前InnoDB还会先看内存里这页头尾的LSN是否一致对不上它宁可自己宕机也绝不把坏页写进文件。双写到底在买什么保险虽然名字叫Doublewrite Buffer感觉像在内存里但真正在掉电后救命的是磁盘上的文件。在MySQL8.0.20以后去数据目录下看那些#ib_16384_0.dblwr文件就是它的真身。刷脏页是个严格的两步走流程顺序绝不能乱先写双写文件把这一批脏页顺序写进双写文件并落盘。这步是顺序IO一批页摊销一次fsync所以哪怕多写一遍性能也没掉到底。再写数据文件然后才把各页分散写回自己的.ibd文件。这步是随机IO。断电落在哪一步命运完全不同死在写双写文件时双写副本是残的但.ibd还没碰里面仍是完整的旧页。重启时丢掉残副本直接拿旧页加redo恢复。死在写.ibd文件时(最致命)数据文件里的页校验失败了。此时恢复机制会从双写文件里拿出那份完整的16KB替身盖回去日志里会打印正在从doublewrite file恢复然后再做redo。只有当两份都写残了才会起不来。虽然有双写也不是100%免死但它把致命的“数据文件写残”窗口缩小到了“双写好页能覆盖”的安全区里。Oracle凭什么不需要这层双写很多玩过Oracle的人会问Oracle常规运行怎么没有Doublewrite机制Oracle默认块通常是8KB写一半断电重启一样会报ORA-01578块损坏它怎么不怕其实Oracle采取的是“降维打击”的设计哲学它把“平时少写一遍”和“坏了怎么修”拆开了修的能力完全依托于其强大的生态工具依靠ADG(Active Data Guard)主库读到坏块直接通过网络向物理备库要这一块好的。备库传回来主库在内存里换上再补齐redo。业务侧毫无感知只是这条SQL慢了几十毫秒。依靠RMAN精确打击没有备库只有备份时直接一条RECOVER DATAFILE 4 BLOCK 1234;从备份集里精准捞出一个块盖回去。库都不用停别的文件照常读写。MySQL这种平民数据库默认跑在普通机器上没有RMAN块级恢复这种贵族工具。双写就是MySQL刷脏路径上自带的那个平民版“备用页”。别踩参数陷阱关了没事不代表安全在MySQL8.0里innodb_doublewrite这参数有不少坑。 默认是ON(或者DETECT_AND_RECOVER)双写里放整页坏了能盖回去。OFF就是直接裸奔。最坑的是**DETECT_ONLY**模式。它依然会写一个后缀为.bdblwr的文件但里面只有表空间号、页号和LSN没有那真实的16KB数据。断电重启时它能精准发现“页撕了”但因为没有整页数据可以盖回去启动流程会直接报错中止。你想兼顾少写IO又想断电自修这个参数做不到。最后别拿幸存者偏差来骗自己。“我关了几个月也没出事啊”——那只是因为断电的那一瞬间脏页刚好没有在往磁盘上写。一旦运气不好撕在没有完整副本的页上这页数据彻底报废接下来的烂摊子只能靠拉从库或者全量备份binlog去慢慢重做了。什么时候真能关 只有当你的底层盘能保证一次物理写16KB要么全在要么全不在时双写才是多余的。比如高端企业级NVMe(支持16KB原子写)或者ZFS这种按16KB对齐的写时复制(COW)文件系统。普通的消费级盘、云盘、ext4和xfs老老实实保持默认开启。为了降那一半IO去赌命真出了事谁也救不了你的数据。

相关推荐

入职第一天,我用 TaoToken 把 Cline 的 settings.json 配好了
入职第一天,我用 TaoToken 把 Cline 的 settings.json 配好了

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:16:20

快速上手:用 Python SDK 实现你的第一个 MCP Client 并接入 TaoToken
快速上手:用 Python SDK 实现你的第一个 MCP Client 并接入 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:16:20

免费自己怎么注册网站:避开流量陷阱,怎么选才不白干
免费自己怎么注册网站:避开流量陷阱,怎么选才不白干

免费自己怎么注册网站:避开流量陷阱,怎么选才不白干 网站做好了没人访问,这是很多站长和开发者最头疼的问题。你辛辛苦苦写了代码,调了样式,甚至花了好几天时间做内容,结果上线后打开量个位数,心里那种挫败感真的很难受。这时候,很多人会问:是不是我… · 2026/9/27 22:16:14

第061篇 字节跳动面试官追着问的性能优化题:CDN 加速原理,前端如何与之配合
第061篇 字节跳动面试官追着问的性能优化题:CDN 加速原理,前端如何与之配合

摘要:本篇复盘 字节跳动 前端开发岗位在 性能优化 方向的真实问法,重点拆 8 道题:Web Vitals 如何采集与监控,线上性能怎么度量、CDN 加速原理,前端如何与之配合、依赖注入解决了什么问题,和工厂有何不同。每题按「考察点 → 参考答案 → 代码/实操 → 易错点 → 面试官… · 2026/9/27 22:54:51

东方博宜OJ 1946:高精度减法3 ← 高精度加法+高精度减法
东方博宜OJ 1946:高精度减法3 ← 高精度加法+高精度减法

【题目来源】 https://oj.czos.cn/p/1946 【题目描述】 处理两个高精度数的减法。(1000位内) 【输入格式】 两行,每行一个整数。(可能为负数,负号用“-”表示) 【输出格式】 一个整数,即两个数相减的结果。​​​​… · 2026/9/27 22:54:51

AI 新闻日报 2026-09-25:Agent 虚拟电脑、编码沙盒、四足跑马拉松
AI 新闻日报 2026-09-25:Agent 虚拟电脑、编码沙盒、四足跑马拉松

主题: 国产编码智能体集体转向「终端 沙盒」,具身智能开始拼单位能耗与量产交付 编制时间: 2026-09-25 本期看点: Agent 虚拟电脑、DSec 训练沙盒、RAIBO2 能耗纪录一、要闻速览(Top Stories)序号事件标签… · 2026/9/27 22:54:51

第062篇 腾讯面试官追着问的性能优化题:Lighthouse 的核心指标有哪些,各自代表什么
第062篇 腾讯面试官追着问的性能优化题:Lighthouse 的核心指标有哪些,各自代表什么

摘要:本篇复盘 腾讯 前端开发岗位在 性能优化 方向的真实问法,重点拆 8 道题:Web Vitals 如何采集与监控,线上性能怎么度量、二分查找的边界条件怎么写才不出错、长列表虚拟滚动的原理与实现要点。每题按「考察点 → 参考答案 → 代码/实操 → 易错点 → 面试官追问」五段… · 2026/9/27 22:54:51

3个真实案例揭秘sem推广平台有哪些与建站报价避坑指南
3个真实案例揭秘sem推广平台有哪些与建站报价避坑指南

3个真实案例揭秘sem推广平台有哪些与建站报价避坑指南 上周刚帮一家深圳做跨境电商的老板复盘项目,他拍着桌子说:“当初为了省那两千块建站费,找了个皮包公司,结果网站上线三个月,SEM投放烧了八万,流量全漏了,这钱花得比打水漂还快。”… · 2026/9/27 22:54:44

二人认知的核心共性:用刚性规则彻底驱逐主观——梁文锋:完全以数学公式为底层核心的工程范式;徐玉生:以数学刚性规则为锚点,融合多维度跨域智慧
二人认知的核心共性:用刚性规则彻底驱逐主观——梁文锋:完全以数学公式为底层核心的工程范式;徐玉生:以数学刚性规则为锚点,融合多维度跨域智慧

‌是的,这套操作模式构建了多层级的时间差壁垒,外部玩家几乎不可能在短期实现超越‌,哪怕砸下巨额资金、复刻表层框架,也会被层层嵌套的护城河牢牢挡在身后,核心原因集中在这几点:1. 独家样本库的时间沉淀壁… · 2026/9/27 22:54:44

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码