为什么MySQL引入Double Writer?

本文深入探讨了InnoDB双写机制的原理、作用及性能影响,解释了其为何能够解决部分写问题,并通过参数配置展示如何监控双写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

㈠ 是什么
   
   double writer是ibdata1(共享表空间)里面的一块连续空间
   BTW:为什么取名时叫buffer呢?难道一切缓冲写都叫buffer,加速读叫cache,哈哈
   
㈡ 为什么需要
   
   redo有效应用的前提是data的一致性,当data flush到磁盘时发生故障,比如16K只写了4K
   并且redo条目是change vector形式,属于逻辑记录,那么在InnoDB recovery时,redo就不知道从哪开始跑起
   简言之,就是为了解决部分写问题(partial page write)
   
㈢ 影响性能吗
   
   第一阶段,data写到double writer buffer属于顺序IO,节省IO开销
   第二阶段,因为double writer buffer积累了很多dirty page,再写向真正的位置时有可能合并,减少fsync()次数
   故,对性能影响不大
   
㈣ 相关参数
   
   ① show variables like '%double%'; <==确认是否开启
   ② show status like '%innodb_dblwr%'; <==展示进来和出去的page数量,并且能计算有多少块被合并写出
   
   
参考资料:
http://www.orczhou.com/index.php/2010/02/innodb-double-write/
   


By 迦夜
2013-10-26
Good Luck 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值