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—锁的监控线程