mysql 基础 double write

来源:互联网 发布:网络电话机终端 编辑:程序博客网 时间:2024/04/30 19:34




double write 整理

什么是innodb  double  write
double  write  是在磁盘表空间开辟的一块连续的地址,如果innodb开启开启double  write时,当innodb刷新数据时会先将数据刷新到double write ,然后再择机将数据刷新到磁盘上的数据文件。


为什么需要innodb
innodb  更新数据时,先将其buffer  pool中的数据页更新,这时 成为脏数据,更新时会写redo log  日志,在数据更新后,数据并不是立刻刷新到磁盘上的data file。而是在适当的时候讲数据刷到磁盘上。但是如果在刷新过程中因为系统崩溃,16k数据只有8k刷新到磁盘上,这种情况称为 partial  page  write。但是redo log 是记录数据已修改了的。至于数据被修改的什么程度,它就无法确定了。所以redo无法恢复。redo的有效应用是innodb 数据文件中的checksum是一致的一致的。如果数据文件和relog 日志中的checksum 和数据文件不一致,那么就不能使用redo log。

double write 的 工作方式。

1)如果写dw buffer失败。那么这些数据不会写到磁盘,innodb会载入磁盘原始数据和redo日志比较,并重新刷到dw buffer。
2)如果写dw buffer成功,但是刷新到磁盘失败,那么innodb就不会通过事务日志来恢复了,而是直接刷新dw buffer中的数据。