-
Notifications
You must be signed in to change notification settings - Fork 55
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
-
本 WIKI 包含了《千金良方--MySQL 性能优化金字塔法则》一书的代码段加粗命令行命令和SQL语句文本、以及4个附录内容,其中:
- 代码段和高清图单独整理为一个系列文档,如下:
- 每个附录都各自整理成了一个小系列文档,如下:
-
《千金良方--MySQL 性能优化金字塔法则》 一书的作者信息如下:
- 李春、罗小波、董红禹
-
联系人QQ:309969177
-
提示:
-
郑重声明:本WIKI仓库中的资料为电子工业出版社与本书的三位作者共同授权开源,为了在方便大家的同时,避免不必要的纠葛,任何商业与非商业的引用、转载,麻烦大家注明出处,谢谢配合!