mysql双写是什么意思_MYSQL双写和块裂

MySQL的双写缓冲机制用于防止断电导致的数据页只写入一半,确保数据完整性。当事务提交后,脏页复制到双写缓冲,然后写入数据文件。在断电或异常情况时,MySQL会检查并修复数据页。此外,文章还对比了Oracle、PostgreSQL和华为高斯在处理数据块完整性的不同策略。
摘要由CSDN通过智能技术生成

什么时块裂呢?

这就涉及到OS(操作系统)的原子写的大小,一般情况下OS原子写是4K,硬盘一个扇区是512字节,4K需要写8个扇区。

假如写了4个扇区发生了断电,或者其他的意外,那么不就是丢失了另外4个扇区的数据吗?是另外2K字节没有写入!

这是OS和磁盘之间的故事,属于硬件工程师或者叫存储工程师操心的事,不过一般采用UPS或者是RAID卡上的电池来保证。

RAID卡10模式采用写两份来保证,RAID5 采用奇偶校验方式。

那么DATABASE(数据库) 与OS 这两者咋办呢?DATABASE MYSQL是16K一个数据页,ORACLE是8K一个块。远比OS4K原子写要大得多。

如何保证断电的时候数据页只写入了一半?

要么靠硬件来保证,要么靠软件机制来保证!

MYSQL 双写机制

当修改页的事务提交后,通过MEMCPY把该脏页复制到DOUBLE WRITE BUFFER中,DWB不是内存而是硬盘一个区域

它在共享表空间IBDATA分配的连续空间。大小2MB,分两个部分每个部分1MB,根据16K可以分128个页。

DWB 写满后或者刷脏行为,则把DWB写入数据文件中。

当断电时候,MYSQL会检查数据文件的页的CHECKSUM有问题,则从DWB拷贝完整的页来覆盖,然后再根据REDO恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值