8

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

Innodb_buffer_pool_pages_dirty  28

当我查看文档时,我看到的只是:

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

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

4

1 回答 1

19

当数据库发生更改(更新/插入/删除)时,出现脏页是正常的。

当您更改一行时,MySQL 会在缓冲池中更新它,将页面标记为“脏”。更改也写入二进制日志,因此在崩溃的情况下,MySQL 将重播日志并且数据不会丢失。写入二进制日志是一种快速的仅追加(顺序)操作,而实际的页面更新使用较慢的随机写入。(这是在后台完成的)

当 MySQL 需要在缓冲池中加载新数据时,它会将脏页刷新到磁盘。所以,在 InnoDB 中有脏页是正常的——它是这样工作的,它是为了提高整体性能而做的。

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

于 2012-04-15T18:14:49.107 回答