InnoDB后台线程threads讲析


下文内容主要给大家带来InnoDB后台线程threads讲析,这里所讲到的知识,与书籍略有不同,都是开发云专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。master thread
核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲、undo页的回收等。
Masterthread在主循环中,分两大部分操作,每秒钟的操作和每10秒钟的操作:
每秒一次的操作包括:
1、日志缓冲刷新到磁盘,即使这个事务还没有提交(总是),这点解释了为什么再大的事务commit时都很快;
2、合并插入缓冲(可能),合并插入并不是每秒都发生,InnoDB会判断当前一秒内发生的IO次数是否小于5,如果是,则系统认为当前的IO压力很小,可以执行合并插入缓冲的操作。
3、至多刷新100个InnoDB的缓冲池的脏页到磁盘(可能),这个刷新100个脏页也不是每秒都在做。
每10秒一次的操作包括:
1、刷新100个脏页到磁盘(可能);
2、合并至多5个插入缓冲(总是);
3、将日志缓冲刷新到磁盘(总是);
4、删除无用的undo页(总是);
5、产生一个检查点(checkpoing);IO thread
主要负责IO请求的回掉处理。分别为write、read、insert buffer和log IO thread。线程数量可以通过参数进行调整。5.6以后的版本可以通过innodb_write_io_threads和innodb_read_io_threads来限制读写线程,而在5.6版本以前,只有一个参数innodb_file_io_threads来控制读写总线程数。
purge thread
负责回收已经使用并分配的undo页,purge操作默认是由master thread中完成的,为了减轻master thread的工作,提高cpu使用率以及提升存储引擎的性能。用户可以开发云主机域名在参数文件中添加如下命令来启动独立的purge thread。
innodb_purge_threads=1
从innodb1.2版本开始,可以指定多个innodb_purge_threads来进一步加快和提高undo回收速度。
page cleaner thread
执行脏页刷新操作。讲脏页刷盘。对于以上关于InnoDB后台线程threads讲析,如果大家还有更多需要了解的可以持续关注我们开发云的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。

相关推荐: MySQL和Oracle行值表达式对比(r11笔记第74天)

行值表达式也叫作行值构造器,在很多SQL使用场景中会看到它的身影,一般是通过in的方式出现,但是在MySQL和Oracle有什么不同之处呢。我们做几个简单的测试来说明一下。 首先我们看一下MySQL 5.6, 5.7版本中的差别,在这一方面还是值得说道说道的。…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/07 17:07
下一篇 06/07 17:07

相关推荐