Skip to content

innodb_page_cleaners

xiaoboluo768 edited this page Jun 14, 2020 · 2 revisions
  • 从缓冲池实例刷新脏页的页面清理线程数。页面清洁线程执行flush列表和LRU刷新。
    • MySQL 5.6中引入了一个单独的页面清理线程(但在5.6.x版本中只支持一个线程,不可配置),用于从InnoDB主线程卸载缓冲池刷新工作。在MySQL 5.7中,InnoDB支持多线程清理。在5.7.7及其之前的版本该变量默认值为1,5.7.8及其之后的版本默认值为4,当该变量大于等于1时,每个缓冲池实例的缓冲池刷新任务将分派到空闲页面清理线程。如果页面清理线程数超过缓冲池实例的数量,则innodb_page_cleaners系统参数的值会自动设置为与innodb_buffer_pool_instances相同的值
    • 如果在将脏页面从缓冲池实例刷新到数据文件时,如果您的工作负载是写入IO为主,并且如果您的系统硬件写IO能力有一定的空闲,则增加页面清洁线程的数量可能有助于提高写入IO吞吐量
    • 在5.7中也支持在正常关闭和启动恢复阶段进行多线程页面清理
    • setpriority()系统调用在支持的Linux平台上以及mysqld执行用户被授权的地方使用,以使page_cleaner线程优先于其他MySQL和InnoDB线程,以帮助页面刷新动作与当前工作负载保持同步。可以在/etc/security/limits.conf中配置mysqld执行用户授权,例如,如果mysqld在mysql用户下运行,则可以通过向/etc/security/limits.conf中添加与以下规则来授权mysql用户:
      • 具体设置参考此参数的官方原文手册部分解释
    • 全局变量,只读变量,整型值,5.7.7之前的5.7.x版本默认值为1,5.7.8及其之后的版本默认值为4,取值范围为1~64,5.7.4版本引入
    • PS:实测:该参数值会受到innodb_buffer_pool_instances值影响,该参数实际的有效值为:<= innodb_buffer_pool_instances最终生效值(不是设置值,当innodb_buffer_pool_size小于1G时,innodb_buffer_pool_instances的生效值始终为1)

上一篇:innodb_page_size | 下一篇:innodb_change_buffering

Clone this wiki locally