master thread 主线程

master thread是后台线程中的主线程,优先级最高,其内部有4个循环,根据数据的运行状态会在这四个循环之间切换:

  • 主循环—loop
  • 后台循环—background loop
  • 刷新循环—flush loop
  • 暂停循环—suspend loop

而在主循环loop中,存在两种操作:

  • 每1s操作:
    • 日志缓冲刷新到磁盘(即使这个事物还没有提交)
    • 刷新脏页到磁盘
    • 执行合并插入缓冲的操作
    • 产生checkpoint
    • 清除无用的table cache
    • 如果当前没有用户活动,就有可能切换到background loop
  • 每10s操作:
    • 日志缓冲刷新到磁盘(即使这个事物还没有提交)
    • 执行合并插入缓冲的操作
    • 刷新脏页到磁盘
    • 删除无用的undo页
    • 产生checkpoint

四大I/O线程

  • read thread—数据库读请求(默认值4)
  • write thread—数据库写请求(默认值4)
  • redo log thread—把日志缓冲中的内容刷新到redo log文件中
  • change buffer thread—把插入缓冲(change buffer)中的内容刷新到磁盘

    其他线程

  • page cleaner thread—脏页刷新线程

  • purge thread—删除无用的undo页
  • checkpoint—在redo log发生切换的时候,执行checkpoint
    • redo log发生切换或者文件快写满时,会触发把脏页刷新到磁盘
  • error monitor thread—数据库报错的监控线程
  • lock monitor thread—锁的监控线程