如何修复InnoDB脏页?

时间:2012-04-11 14:20:59

标签: mysql innodb

当我发出SHOW GLOBAL STATUS; MySQL命令时,我得到的一行是:

Innodb_buffer_pool_pages_dirty  28

当我查看the documentation时,我看到的只有:

  

当前脏的页数。在MySQL 5.0.2中添加。

我该如何解决这个问题(我假设脏页不好)?

1 个答案:

答案 0 :(得分:12)

拥有脏页是正常的。更新行时,MySQL会在缓冲池中更新它,将页面标记为脏。更改也写在二进制日志中,因此在崩溃的情况下,MySQL将重放日志,数据不会丢失。写入二进制日志是仅附加操作,而实际更新涉及随机写入,随机写入较慢。

当需要在缓冲池中加载新数据时,MySQL会将脏页刷新到磁盘。 因此,在InnoDB中使用脏页是正常的 - 它是如何工作的,并且它是为了提高整体性能而做的。

但是如果你真的想摆脱它们,请将innodb_max_dirty_pages_pct设置为0