首先说一下什么叫脏页,就是内存中的数据对应硬盘的数据有所改变.改变后的数据页就叫做脏页.
它形成的前后关系以及讲解可以看:
http://www.orczhou.com/index.php/2009/08/innodb-dirty-page-redo-log-2/comment-page-1/
上面的博文比较学院化,老子不喜欢,但是讲的很好.我要用我自己的语言重新解释.
这个世界是不安全的,盗取无处不在.
有一家图书馆,每天都有借出去的书,也有还回来的书,书架上都有标签,还书后还要放回原标签处.
某天小姐来借书,借走了"男性生理结构这本书".那么这个书所在的位置就空出来了.这种需要被放回去的书我们称之为脏页.
小姐研读完毕,回到图书馆说,我看完了,退书.但是她并不是在哪里拿,在哪里退,而是送回给图书管理员.
图书管理员将被还回来的书放到了一个安全的所在,一排排的整理好.
最后,等到一天结束或者书量巨大,就将抽出时间将这些书整批整批的放回远处.
redo log 和 刷脏页大致的流程就是如此,书就是数据页,被借出的书就是脏页,将来要被放回的.redo 日志就是暂时存放要被放回的书的地方,因为这样会比较快,如果
还回一本书放回去一本,就会导致很多的随机写入,而且写入次数十分大.
redo log 大小:innodb_log_file_size*innodb_log_files_in_group
脏页大小:current LSN - check point LSN
脏页最大量:innodb_max_dirty_pages_pct (计算方法:脏页大小/redo log 大小)
就是这样,将来还会继续更新与redo log 和脏页之间的现象.