Mysql Master Thread线程工作原理

InnoDB1.0.x版本之前

Master Thread具有最高的线程优先级别,内部由多个循环组成主循环(loop)后台循环(backgroud)刷新循环(flush)暂停循环(suspend),Master Thread会根据数据库运行的状态在这几个循环中切换。

loop主循环

大多数的操作是在这个循环中进行的,其中有两大部分的操作——每秒钟和每十秒的操作。每秒钟和每十秒的操作是不精确的,在负载很大的情况下可能会有延迟,只能说大概在这个频率下。
每秒一次的操作包括:

  • 日志缓冲刷新到磁盘,即使这个事务还没有提交(总是)
    事务没有提交,InnoDB仍然每秒会将重做日志缓冲中的内容刷新到重做日志文件,这可以很好的解释大事务提交时间短的原因。
  • 合并插入缓冲(可能)
    合并插入缓冲(Insert Buffer)并不是每秒都会发生的。InnoDB会判断前一秒的IO次数是否小于5次,小于则进行合并缓冲的操作。
  • 至多刷新100个InnoDB的缓冲池的脏页到磁盘(可能)
    不是每秒都会发生,InnoDB会判断当前缓冲池中脏页的比例是否超过了配置文件中的参数(innodb_max_dirty_pages_pct),如果 超过了这个法治,InnoDB会认为需要做磁盘同步的操作,将100个脏页写入磁盘中。
  • 如果当前没有用户活动,则切换到background loop(可能)
    每十秒的操作包括:
  • 刷新100个脏页到磁盘
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值