美文网首页
MySql--doubleWrite

MySql--doubleWrite

作者: 简书徐小耳 | 来源:发表于2019-05-23 15:51 被阅读0次

doubleWrite的目的(是顺序写,但不是dio,redo才是DIO)

  • 1.redo是物理逻辑日志,通过物理定位到page,然后记录在page上面的逻辑
  • 2.redo无法替代doublewrite的原因在于,当发生partial page的时候redo无法操作

partial page

  • 1.比如我们写一个完整的页之前会修改页头的checSum,然后写到一半断电了,则页头和页尾的checkSum不同,因此导致页校验不通过
  • 2.而redo日志重做的时候 页头的checkSum和页尾的checkSum只能依次增加 永远不能相等,所以需要完整的替换该页。

double write的原理

  • 1.double write 一部分在内存中的double write buffer大小为2MB
  • 2.还有一部分在共享表空间的128个页--2MB
  • 3.当我们从LRU或者FLUSH链表拿到脏页准备刷新的时候,是将他们内容通过memcpy函数复制到doublewrite buffer
  • 4.然后double write buffer 分两次1MB顺序地写入共享表空间的磁盘,然后调用Fsync函数同步。因为是顺序所以性能损耗不大
  • 5.如果doublewrite 发生partial page,直接抛弃使用对应的redo恢复。当两次顺序写结束,innodb再开始随机写入我们对应的数据页

相关文章

  • MySql--doubleWrite

    doubleWrite的目的(是顺序写,但不是dio,redo才是DIO) 1.redo是物理逻辑日志,通过物理定...

网友评论

      本文标题:MySql--doubleWrite

      本文链接:https://www.haomeiwen.com/subject/ohyvzqtx.html