MySQL为什么有了redolog还需要double write buffer?
MySQL为什么有了redolog还需要double write buffer问题我们知道MySQL InnoDB引擎使用redolog作为异常容灾恢复的机制当MySQL进程发生异常退出、机器断电等在重新启动时使用redolog恢复。OKredolog是被MySQL设计为异常崩溃恢复的double write buffer同样是为了保证数据完整性那么既然已经有了redolog为什么还需要double write buffer双写缓冲区呢double write bufferInnoDB用double write buffer双写缓冲区来避免页没写完整所导致的数据损坏。当一个磁盘写操作不能完整地完成时不完整的页写入就可能发生16KB的页可能只有一部分被写到磁盘上。有多种多样的原因崩溃、Bug等等可能导致页没有写完整。double write buffer在这种情况发生时可以保证数据完整性。MySQL的buffer一页的大小是16K但是底层文件系统一页的大小是4K换句话说MySQL将一页buffer数据刷入磁盘需要写4个文件系统里的页。假如MySQL内page1的页准备刷入磁盘才刷了2个(p1和p2)到文件系统里的页这个时候停电或者机器宕机当机器恢复后buffer的一页数据完整性已经遭到破坏这时MySQL通过double write buffer来解决数据损坏。double write buffer是表空间一个特殊的保留区域在一些连续的块中足够保存100个页。本质上是一个最近写回的页面的备份拷贝。当InnoDB从缓冲池刷新页面到磁盘时首先把它们写或者刷新到double write buffer然后再把它们写到其所属的数据区域中。这可以保证每个页面的写入都是原子并且持久化的。如果有一个不完整的页写到了double write buffer原始的页依然会在磁盘上它的真实位置。当InnoDB恢复时它将用原始页面替换掉双写缓冲中的损坏页面。然而如果double write buffer成功写入但写到页的真实位置失败了InnoDB在恢复时将使用双写缓冲中的拷贝来替换。InnoDB知道什么时候页面损坏了因为每个页面在末尾都有校验值Checksum。校验值是最后写到页面的东西所以如果页面的内容跟校验值不匹配说明这个页面是损坏的。因此在恢复的时候InnoDB只需要读取double write buffer中每个页面并且验证校验值。如果一个页面的校验值不对就从它的原始位置读取这个页面。我们来梳理一下整个数据页落盘刷新的过程buffer数据页先copy到double write buffer的内存里double write buffer的内存数据刷到double write buffer的磁盘上double write buffer的内存再刷到数据磁盘上当MySQL出现异常崩溃时有如下几种情况发生情况一步骤1前宕机刷盘未开始数据在redo log后期可以恢复情况二步骤1后步骤2前宕机因为是在内存中宕机清空内存和情况1一样情况三步骤2后步骤3前宕机因为DWB的磁盘有完整的数据可以修复损坏的页数据由此我们可以得出结论double write buffer是针对实际的buffer数据页的原子性保证就是避免MySQL异常崩溃时写的那几个data page不会出错要么都写了要么什么都没有做。为什么redolog无法代替double write bufferredolog的设计之初是“账本的作用”是一种操作日志用于MySQL异常崩溃恢复使用是InnoDB引擎特有的日志本质上是物理日志记录的是 “ 在某个数据页上做了什么修改 ” 但如果数据页本身已经发生了损坏redolog来恢复已经损坏的数据块是无效的数据块的本身已经损坏再次重做依然是一个坏块。所以此时需要一个数据块的副本来还原该损坏的数据块再利用重做日志进行其他数据块的重做操作这就是double write buffer的原因作用。因此double write buffer与redolog对于容灾场景缺一不可。本文参考《高性能MySQL第三版》

相关新闻

酷炫 css 按钮 边框霓虹

酷炫 css 按钮 边框霓虹

设计方式&#xff1a;通过伪元素、动画与层级展示 &#xff0c;另外旋转 伪元素内容的方式实现&#xff1b;<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content…

2026/5/17 8:52:48 阅读更多 →
Python—编程题

Python—编程题

文档结构练习题练习题 1、使用一行代码实现给定列表的奇偶数分离&#xff1b;list_a [11, 22, 45,17,19,21,76,34,28,59] 答案&#xff1a;此处使用 列表推导式实现&#xff1b; >>> >>> list_a [11, 22, 45,17,19,21,76,34,28,59] >>> part_j…

2026/7/4 9:59:29 阅读更多 →
CPU中央处理器(下)

CPU中央处理器(下)

控制器 控制器的输入和输出输入信号 (1&#xff09;时钟 完成每个操作都需要占用一定的时间&#xff1b;各个操作之间有先后次序之分 因此控制单元需要在时钟的控制下按照一定的顺序发出控制信号。 (2&#xff09;指令寄存器&#xff08; IR ) 指令寄存器的操作码字段决定了指令…

2026/5/17 8:52:42 阅读更多 →

最新新闻

基于混沌系统与DNA编码的图像加密算法原理与Matlab实现

基于混沌系统与DNA编码的图像加密算法原理与Matlab实现

1. 项目概述&#xff1a;当混沌遇上DNA&#xff0c;图像加密的新思路最近在复现和优化一些经典的图像加密算法&#xff0c;发现将Logistic映射和Chen超混沌系统结合起来&#xff0c;再引入DNA分块编码&#xff0c;是一条非常有意思的技术路线。这不仅仅是两个混沌系统的简单堆叠…

2026/7/5 20:08:17 阅读更多 →
LaTeX-Workshop环境变量深度解析:高级配置与性能优化实战

LaTeX-Workshop环境变量深度解析:高级配置与性能优化实战

LaTeX-Workshop环境变量深度解析&#xff1a;高级配置与性能优化实战 【免费下载链接】LaTeX-Workshop Boost LaTeX typesetting efficiency with preview, compile, autocomplete, colorize, and more. 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX-Workshop 作…

2026/7/5 20:04:16 阅读更多 →
CANN特征向量检索指南

CANN特征向量检索指南

特征向量检索&#xff08;FV&#xff09; 【免费下载链接】docs 该仓库用于维护cann公共文档 项目地址: https://gitcode.com/cann/docs 基本原理 该部分主要实现了对特征检索的功能验证&#xff0c;生成随机底库&#xff0c;随机生成特征数据进行特征检索&#xff08;…

2026/7/5 20:04:16 阅读更多 →
5个核心场景解锁:NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单

5个核心场景解锁:NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单

5个核心场景解锁&#xff1a;NBTExplorer可视化编辑器让Minecraft数据编辑变得如此简单 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经因为看不懂Minec…

2026/7/5 19:58:15 阅读更多 →
终极黑苹果配置革命:智能硬件识别与OpenCore自动化配置

终极黑苹果配置革命:智能硬件识别与OpenCore自动化配置

终极黑苹果配置革命&#xff1a;智能硬件识别与OpenCore自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在传统黑苹果配置过程中&#xff0…

2026/7/5 19:58:15 阅读更多 →
D-Link DCS摄像头CVE-2020-25078漏洞剖析与批量检测脚本实现

D-Link DCS摄像头CVE-2020-25078漏洞剖析与批量检测脚本实现

1. 项目概述&#xff1a;一次对D-Link DCS监控设备信息泄露漏洞的深度剖析最近在整理网络设备安全审计案例时&#xff0c;一个老生常谈但又屡见不鲜的漏洞类型再次引起了我的注意——硬编码或未授权访问导致的信息泄露。D-Link DCS系列网络监控摄像头爆出的CVE-2020-25078漏洞&…

2026/7/5 19:58:15 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

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

周新闻

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

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

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

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

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

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

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

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

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

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

月新闻