当我发出SHOW GLOBAL STATUS;
MySQL
命令时,我得到的行之一如下:
Innodb_buffer_pool_pages_dirty 28
当我查看文档时,我看到的只是:
当前脏页数。在 MySQL 5.0.2 中添加。
我该如何解决这个问题(我假设脏页不是什么好事)?
当数据库发生更改(更新/插入/删除)时,出现脏页是正常的。
当您更改一行时,MySQL 会在缓冲池中更新它,将页面标记为“脏”。更改也写入二进制日志,因此在崩溃的情况下,MySQL 将重播日志并且数据不会丢失。写入二进制日志是一种快速的仅追加(顺序)操作,而实际的页面更新使用较慢的随机写入。(这是在后台完成的)
当 MySQL 需要在缓冲池中加载新数据时,它会将脏页刷新到磁盘。所以,在 InnoDB 中有脏页是正常的——它是这样工作的,它是为了提高整体性能而做的。
但如果你真的想摆脱它们,请将innodb_max_dirty_pages_pct设置为 0