innodb double write buffer

两次写是innodb的一个重要特性,目的是为了保证在异常down机或者没电的情况下,保证数据的安全可靠。一次是往内存的double write buffer中写,一次是在刷共享表空间的连续128个页。

为什么需要double write buffer?

innodb page一个页是64KB,而通常情况下都是一个页的一部分被修改,比如8KB,而其他的保持原状。而对于大多数Linux系统默认的block size是4KB,所以一个innodb page会被分成好多块,分别被刷

在没写入真正的ibd文件之前,double write buffer都是顺序写;当往ibd文件刷的时候才是离散写;查看double write运行情况可以用以下命令:

是否打开了double write:

show variables like "%double%";

查看double write的使用情况:

SHOW global STATUS LIKE "%innodb_dblwr%";

相当于每次write合并了Innodb_dblwr_pages_written/Innodb_dblwr_writes次Flush

当Innodb_dblwr_pages_written/Innodb_dblwr_writes 比例越大时说明DB的压力很小

关闭double buffer,在my.cnf中添加(生产中不建议这么做)

innodb_doublewrite=0

 

posted @ 2013-12-04 10:21  sunss  阅读(793)  评论(0编辑  收藏  举报