MySQL 主要线程

本文介绍了MySQL的主要线程,包括Master thread、io thread、purge thread和page Cleaner Thread。详细阐述了Master thread的四大循环及其作用,还说明了不同版本中各线程的变化,如io thread数量的调整、purge thread的独立等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 主要线程

在这里插入图片描述

1. Master thread

Master thread有四大循环,分别是loop,background loop,suspend loop,flush loop。且四大循环的作用如下:

  • loop: 是master thread的主循环, 用于将buffer pool的脏页刷新到磁盘,合并change buffer的脏页到辅助索引页面,清理undo log页。
  • background loop: 这是master thread的后台循环。当数据库还在运行,且没有用户运行事件,此时会进入background 循环。
  • flush loop: 刷新循环。一般是进入background loop后当服务器没有空闲状态了会进入flush loop.
  • suspend loop: 暂停循环,数据库处于恢复的状态,状态恢复后进入loop循环.

在这里插入图片描述
如上图所示
innodb 1.0.x之前的master thread和此版本有些不同。不同之处在于脏页刷新的页面数,在1.0.x之前的版本中,每秒刷写固定的100个脏页,合并20个undo页。

2. io thread

在innodb 存储引擎中大量使用了AIO(Async IO)来处理io请求.在innodb 1.0.x版本之前,共有4个IO thread,分别是 wirte io ,read io,insert buffer ,log io thread,但是在windows平台可以通过innodb_file_io_threads来增加IO thread。从InnoDB 1.0.X版本开始,read thread,write thread分别增加到了4个,并不再使用innodb_file_io_threads参数,而是使用innodb_read_io_threads,innodb_write_io_threads参数。

3. purge thread

purge thread主要用于回收undo 页。在InnoDB 1.1版本之前主要由master thread回收undo 页,从innodb 1.1版本开始,将purge独立,从而提高cpu利用率。用户可以通过innodb_purge_threads参数设置purge 的线程,不过这一特性是从innodb 1.2开始支持的,一般就设置4吧,表示有4个purge thread并行清理undo页面。

4. page Cleaner Thread

page Cleaner Thread 用于脏页刷新,这一功能是从innodb 1.2.x版本开始引入的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值