暂无图片
请问各位老大mysql double write机制为什么解决partial write问题?
我来答
分享
小北
2024-11-28
请问各位老大mysql double write机制为什么解决partial write问题?

请问各位老大mysql double write机制为什么解决partial write问题?

如果double write buffer就写坏怎么解决?

谢谢!

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
龙舌兰地落🌏

因为Linux文件系统页(OS page)默认大小是4KB,而MySQL的页(Page)默认大小是16KB。如果只是写了一部分页就宕机了,那就写坏。

而double write机制下整个数据页落盘刷新的过程是:
1.buffer数据页先copy到double write buffer的内存里;
2.double write buffer的内存数据刷到double write buffer的磁盘上;
3.double write buffer的内存再刷到数据磁盘上;

当MySQL出现异常崩溃时,有如下几种情况发生:
情况一:步骤1前宕机,刷盘未开始,数据在redo log,后期可以恢复
情况二:步骤1后,步骤2前宕机,因为是在内存中,宕机清空内存,和情况1一样
情况三:步骤2后,步骤3前宕机,因为DWB的磁盘有完整的数据,可以修复损坏的页数据

由此可以得出结论,double write buffer是针对实际的buffer数据页的原子性保证,就是避免MySQL异常崩溃时,写的那几个data page不会出错,要么都写了,要么什么都没有做。

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
小北
题主
2024-11-28
大佬,麻烦您问一下。既然double write buffer写坏了,可以用redo log恢复,那为什么数据页刷盘时候写坏了不能用redo log恢复?
龙舌兰地落🌏

写坏了是不能用redolog恢复的,数据页本身已经发生了损坏,redolog来恢复已经损坏的数据块是无效的,数据块的本身已经损坏,再次重做依然是一个坏块。

暂无图片 评论
暂无图片 有用 3
打赏 0
龙舌兰地落🌏
答主
2024-11-28
注:此条解释你问的数据页刷盘时候写坏了的情况
回答交流
Markdown


请输入正文
提交
相关推荐
sqlyog误删了连接信息,可以找回吗?
回答 1
已采纳
不能
oracle数据库怎么导入mysql里?2个库网络环境不通
回答 1
已采纳
方法一:使用阿里巴巴开源的datax产品https://github.com/alibaba/datax下载编译用datax将oracle数据导出为文本文件(csv格式)。将文本文件复制到目标库。用d
vscode 配置MySQL
回答 1
已采纳
1、安装vscode:https://code.visualstudio.com/Download,这个软件安装还是比较简单的,在此就不赘述了;2、打开vscode,打开软件左边的扩展栏,搜索MySQ
请问下 MySQL安装完成后,驱动包在数据库的哪个路径呢
回答 2
安装完mysql不会安装驱动包,去官网下载:https://dev.mysql.com/downloads/
数据库MGR宕机后重启顺序异常导致的主从库数据不同步
回答 1
1.mysqlshell本身有命令启动前进行检查动作。  dba.rebootClusterFromCompleteOutage2.groupreplicationexitstat
比较大的.ibd文件恢复导致数据库崩了直接重启
回答 13
已采纳
undropforinnodb工具5.7高版本是可以解析的。但mysql8.0有点困难,可以是试试。
select * ,怎么还提示Using index condition ,索引全覆盖?
回答 2
楼上说的对,usingindexcondition是索引下推,说明首先a100用到了索引,b>200在innodb层进行了筛选,没有到server层筛选。
explain analyze delete from t where id<10 的语句,会真实的把数据给删除吗?
回答 2
只是模拟真实操作,根据统计信息,解析&nbsp;各种信息,让你参考的。不会真实删除的。
MySQL数据文件能存放在不同的目录吗
回答 2
也可以看看这个https://www.modb.pro/db/100600
MySQL用哪个图形化界面比较好?
回答 3
&nbsp;workbench还可以带监控功能官方出品&nbsp;&nbsp;dbeaver大而全也可以。