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锁的监控.

mysql后台线程详解的更多相关文章

  1. mysql查看线程详解(转载)

    如果有 SUPER 权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的 MySQL 帐户运行的线程). mysql> show processlist; +—–+——— ...

  2. MySQL数据库备份详解

    原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...

  3. Mysql 三大特性详解

    Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的.所以我们通过ps查找mysqld进程是只有一个. 体系架构 InnoDB存储引擎的架构如下 ...

  4. MySQL关闭过程详解和安全关闭MySQL的方法

    MySQL关闭过程详解和安全关闭MySQL的方法 www.hongkevip.com 时间: -- : 阅读: 整理: 红客VIP 分享到: 红客VIP(http://www.hongkevip.co ...

  5. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  6. Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)

    Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...

  7. MySQL日志功能详解

    MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...

  8. (转)MySQL备份原理详解

    MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之 ...

  9. 如何查看mysql数据库的引擎/MySQL数据库引擎详解

    一般情况下,mysql会默认提供多种存储引擎,你可以通过下面的查看: 看你的mysql现在已提供什么存储引擎:mysql> show engines; 看你的mysql当前默认的存储引擎:mys ...

随机推荐

  1. pytest--fixture

    前戏 fixture是在测试函数运行前后,由pytest执行的外壳函数.fixture中的代码可以定制,满足多变的测试需求,包括定义传入测试中的数据集.配置测试前系统的初始状态.为批量测试提供数据源等 ...

  2. CF1178F Short/Long Colorful Strip(DP)

    说起来,这题好像也不难-- 先考虑 F1 怎么做. 既然别的方法都不行不如试试\(f_{i,j}\) 表示在刚刚准备开始涂 \([i,j]\) 中最小编号的颜色之前,整个区间是同色的,且最后能做到 \ ...

  3. Linux性能优化实战学习笔记:第二十八讲

    一.案例环境描述 1.环境准备 2CPU,4GB内存 预先安装docker sysstat工具 apt install docker.io sysstat nake git 案例总共由三个容器组成: ...

  4. 多线程避免使用SimpleDateFormat及替代方案

    先来看一个多线程下使用例子,看到运行结果会出现异常: import java.text.DateFormat; import java.text.SimpleDateFormat; import ja ...

  5. LeetCode题库整理(自学整理)

    1. Two Sum 两数之和       来源:力扣(LeetCode) 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利 ...

  6. java包学习之JDBC

    public class DemoJDBC { public static void main(String[] args) throws ClassNotFoundException, SQLExc ...

  7. maven集成命令-U -B -P -e -X

    maven -U clean compile install -e -X -Dmaven.test.skip=true 在持续集成服务器上使用怎样的 mvn 命令集成项目,这个问题乍一看答案很显然,不 ...

  8. iOS依赖库管理工具之CocoaPods

    CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.利用 CocoaPods,可以定义自己的依赖关系库 (称作 pods),并且随着时间的变化,在整个开发环境中对第 ...

  9. 版本分支管理标准 - Trunk Based Development 主干开发模型

    之前分享过<版本分支管理标准 - Git Flow>,不过在实际使用过程中, 因为其有一定的复杂度,使用起来较为繁琐,所以一些人员较少的团队并不会使用这个方案. 在这基础上,一些新的分支管 ...

  10. 在Azure DevOps Server(TFS)上集成Python环境,实现持续集成和发布

    Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...