mysql后台线程详解
1.mysql后台线程
mysql后台线程主要用于维持服务器的正常运行和完成用户提交的任务,主要包括:master thread,read thread,write thread,redo log thread,change buffer thread,page cleaner thread,purge thread,checkpoint,error monitor thread,lock monitor thread等.
2.mysql后台线程详解
1)master thread
Master thread优先级最高, 其内部包含几个循环:主循环(loop),后台循环(background loop),刷新循环(flush loop),暂停循环(suspend loop).master thread会根据其内部运行的相关状态在前述各循环间中进行切换.
大部分操作在主循环(loop)中完成,其包含有1s和10s两种操作.
1s操作主要包括:日志缓冲刷新到磁盘(总是,即使事务还没有提交);最多刷100个新脏页到磁盘(可能);执行和并改变缓冲的操作(可能);若当前没有用户活动,可能切换到background loop等.
10s操作主要包括:刷新100个脏页到磁盘(可能);合并至多5个改变缓冲(总是);日志缓冲刷新到磁盘(总是);删除无用的undo页(总是);刷新100个或者10个脏页到磁盘(总是)产生一个检查点(总是)等.
2)read thread
read thread为mysql的读线程,默认为4个,其负责将数据页从磁盘上读入,其由innodb_read_io_threads选项控制.用户线程发起读请求并将其放至读请求队列,read threads从读请求队列获取读任务并完成.
3)write thread
write thread为mysql的写线程,默认为4个,其负责将数据页从缓冲区写出到磁盘,其由innodb_write_io_threads控制选项控制.page_cleaner线程发起写请求并将其放至写请求队列,write threads从写请求队列获取写任务并完成.
4)redo log thread
redo log thread负责把日志缓冲中的内容刷新到redo log文件中.
5)change buffer thread
change buffer thread负责把改变缓冲(change buffer)中的内容刷新到磁盘.
6)page cleaner thread
page cleaner thread是负责脏页刷新的线程,从MySQL5.7起可增加多个.
7)purge thread
purge thread负责删除无用的undo页.由于进行DML语句的操作都会生成undo,系统需要定期对undo页进行清理,这是需要purge操作,同时,其还对已经标记为删除但还未清理的无用clustered和secondary索引数据进行清除.mysql5.6开始,把purge thread专门从master thread中分离出来,其由innodb_purge_thread选项进行控制.默认为1个,最大可以调整为32个.
8)checkpoint thread
checkpoint thread负责在redo log发生切换时,执行checkpoint.
9)error monitor thread
error monitor thread负责mysql报错的监控.
10)lock monitor thread
lock monitor thread负责mysql锁的监控.
最新文章
- PHP的学习--在Atom中使用XDebug(Mac)
- webstom设置和monokia配色方案
- Appium学习实践(一)简易运行Appium
- centos+nginx从零开始配置负载均衡
- 把一个SVN项目的目录结构 导入到另外一个空白的SVN项目里
- java运算符的优先级
- jQuery如何检查某个元素在网页上是否存在
- 使用C++11实现无锁stack(lock-free stack)
- springmvc权限拦截器
- OpenGL红宝书例子2.2 uniform变量的使用
- JS特效——文字打印机
- 【17-06-16】Java入门测试题,测测你基础知识掌握程度(附答案及个人解析)
- Java导出压缩包工具类
- react_app 项目开发 (5)_前后端分离_后台管理系统_开始
- ZooKeeper用途
- anaconda2安装cv2
- Storm并行度
- 浅析NSTextContainer
- MySQL 通用查询日志和慢查询日志分析
- 20145311 《Java程序设计》第六周学习总结
热门文章
- LG5200 「USACO2019JAN」Sleepy Cow Sorting 树状数组
- 链接doc命令行的mysql的编码问题
- 每天一道Rust-LeetCode(2019-06-14)
- 11/7 <;Dynamic Programming>;
- linux下找到JVM占用资源最高的线程
- [随笔]冲NOIP一等奖。。
- Linux文件系统与日志
- CF1175F The Number of Subpermutations
- [LeetCode] 187. Repeated DNA Sequences 求重复的DNA序列
- [LeetCode] 146. LRU Cache 最近最少使用页面置换缓存器