oracle为什么不用double write ? 

2021-07-06 15:28:28 0点赞 0收藏 0评论

数据库,OS和磁盘读写的基本单位是块,也可以称之为(page size) block size。

数据库的块一般为8k,16k; OS的块则一般为4K; IO块更小,linux 内核要求IO block size <= OS block size.

磁盘IO除了IO block size , 还有扇区的概念(IO sector), 扇区是磁盘物理操作的基本单位, 而IO 块是磁盘操作的逻辑单位,一个IO块对应一个或多个扇区,扇区大小一般为512字节。

所以各个块大小的关系如下:

DB block > OS Block >= IO Block> Disk Block ,而且他们之间保持着整数倍的关系。比如DB 以mysql 为例, OS 以linux 为例:

DB block size

mysql> show variables like 'innodb_page_size';

| Variable_name | Value |

| innodb_page_size | 16384 |

1 row in set (0.01 sec)

OS block size

IO block size

Sector size

Sector size (logical/physical): 512 bytes / 512 bytes

从上面的结果可以看到 DB page=4OS page=16IO pages=32*sector size

由于任何DB page的写入,最终都会转为sector的写入,如果在写磁盘的过程中,出现异常重启,就可能会发生一个DB 页只写了部分sector到磁盘,进而出现页断裂的情况。

InnoDB 的page size 一般是16KB,其数据校验也是针对这16KB计算的,将数据写入到磁盘是以page为单位进行操作的。而计算机硬件和操作系统,在极端情况下(比如断电)往往并不能保证这一操作的原子性,16K的数据, 写入4K时,发生了系统断电/os crash , 只有一部分写是成功的,这种情况写就是partial page write。

很多DBA 会想到系统恢复后,Mysql 可以根据redo log 进行恢复, 而mysql 在恢复的过程中是检查page的checksum, checksum就是page的最后事务号,发生 partial page write 问题时, page 已经损坏,找不到改page的事务号,就无法恢复。

所以说,当page 损坏后,应用redo 是没有意义的,这时候无法使用redo 来恢复,因为游戏原始页已经损坏了,会发生数据丢失。

oracle为什么不用double write ? 

文章图片来源:游戏http://www.sangpi.com/

在InnoDB 将Buffer Pool 中的Dirty Page 刷到磁盘上时,首先会将(memcpy函数) page 刷到InnoDB system tablespace(ibdata1)的一个区域中,我们称该区域为double write buffer (大小为2MB, 每次写入1MB,128个页)。在向dwww.cungun.comouble write buffer写入成功后,第二步再将数据拷贝到数据文件对应的位置。

当第二步过程中发生故障,也就是发生partial page write的问题。 恢复的时候先检查页内的checksum是否相同,不一致,则直接从doublewrite中恢复

1)如果写doublewrite buffer失败,那么这些数据不会写到磁盘,innodb会载入磁盘原始数据和redo日志比较,并重新刷到doublewrite buffer。

2) 如果写doublewrite buffer成功,但是刷新到磁盘失败,那么innodb就不会通过事务日志来恢复了,而是直接刷新doublewrite buffer中的数据。

mysql> show variables like '%double%';

| Variable_name | Value |

| innodb_doublewrite | ON |

1 row in set (0.00 sec)

mysql> show status like '%innodb_dblw%';

| Variable_name | Value |

| Innodb_dblwr_pages_written | 5951 |

| Innodb_dblwr_writes | 1383 |


展开 收起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

235.6元起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

238元起

Microsoft 微软 Office 365 个人版

Microsoft 微软 Office 365 个人版

75元起

WPS 金山软件 超级会员15个月卡+哔哩哔哩大会员年卡

WPS 金山软件 超级会员15个月卡+哔哩哔哩大会员年卡

暂无报价

Microsoft 微软 大促爆发到手15月 微软office365家庭版microsoft365增强版

Microsoft 微软 大促爆发到手15月 微软office365家庭版microsoft365增强版

275元起

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

188.1元起

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

统信 UOS桌面操作系统V20/适用于国产型号/官方正版授权/国产专用

598元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

189元起

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

暂无报价

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

任天堂 Nintendo Switch《舞力全开 Just Dance》 游戏兑换卡

158元起

365office365OfficePLUS Microsoft365 12 -

365office365OfficePLUS Microsoft365 12 -

235元起

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

37.05元起

WPS 金山软件 超级会员年卡+芒果TV年卡

WPS 金山软件 超级会员年卡+芒果TV年卡

158元起

Microsoft 微软 618活动6天 office365家庭版microsoft365订阅密钥

Microsoft 微软 618活动6天 office365家庭版microsoft365订阅密钥

235元起

WPS 金山软件 AI会员1年 金山办公软件官方正版

WPS 金山软件 AI会员1年 金山办公软件官方正版

198元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
每天领现金,最高24888元
红包按钮
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松