mysql赃页的刷新:
(1)重做日志ib_logfile文件写满后,在切换的过程中会执行checkpoint,会触发赃页的刷新。
(2)通过innodb_max_dirty_pages_pct参数的值控制。该参数是指在buffer pool中dirty page所占的百分比,达到设置的值,就会触发赃页的刷新。
show global variables like ‘innodb_max_dirty_pages_pct’;
±---------------------------±----------+
| Variable_name | Value |
±---------------------------±----------+
| innodb_max_dirty_pages_pct | 75.000000 |
±---------------------------±----------+
1 row in set (0.00 sec)
生产环境中该值可以设置为25%~50%之间,默认75%,调低是为了避免后期赃页的刷新时影响整体数据库的TPS性能。
(3)由innodb_adaptive_flushing参数控制,该参数影响美妙树下赃页的数目,它使用一种性的算法,通过函数判断重做日志产生的速度,来确定需要刷新赃页的最合适数量,替换了之前的innodb_max_dirty_pages_pct,刷新至多100个赃页到磁盘。这样即使赃页比例小于innodb_max_dirty_pages_pct参数设置的值,也会刷新一定的赃页。innodb_adaptive_flushing参数默认是开启状态的。
show global variables like ‘innodb_adaptive_flushing’;
±-------------------------±------+
| Variable_name | Value |
±-------------------------±------+
| innodb_adaptive_flushing | ON |
±-------------------------±------+