MySQL后台线程的清理工作
后台清理工作:脏页刷盘、undo回收
1、page cleaner thread:刷新脏页
2、purge thread:清空undo页、清理“deleted”page
一、innodb_page_cleaners
page cleaner线程从buffer pool中刷脏页的线程数量。
1、5.7新特性
1、5.6版本以前,脏页的清理工作交由master线程的;
2、Page cleaner thread是5.6.2引入的一个新线程(单线程),从master线程中卸下buffer pool刷脏页的工作独立出来的线程(默认是启一个线程);
3、5.7开始支持多线程刷脏页;
2、发起脏页的写请求
清理因为触发需要脏页回收的脏页(脏很久了、冷脏页……)
注意:真正干活的,将dirty page写入磁盘的是innodb_write_io_threads
3、如何调整这个参数
mysql> show variables like 'i%cleaners';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_page_cleaners | 1 |
+----------------------+-------+
1 row in set (0.05 sec)
1、配置文件my.cnf中添加innodb_page_cleaners=num值
2、默认是1;最大可以是64,也就是会有64个page cleaner线程并发工作清理脏页
4、如何判断是否要修改增加innodb_page_cleaners
mysql> show global status like '%wait_free';
+------------------------------+-------+
| Variable_name | Value |
+------------------------------+-------+
| Innodb_buffer_pool_wait_free | 0 |
+------------------------------+-------+
1 row in set (0.01 sec)
Innodb_buffer_pool_wait_free:标志着脏页有没有成为系统的性能瓶颈;如果值很大,则需要增加innodb_page_cleaners值,同时增加写线程。
1、通常,对于buffer pool的写发生在后台,当innodb需要读或创建一个数据页,但是没有干净的可用页,innodb就会为等待的操作能完成先将一些脏页刷入磁盘。
2、Innodb_buffer_pool_wait_free就是这等待操作的实例数。如果innodb_buffer_pool_size的大小设置适当,这个值就会很小,甚至为0。
二、innodb_purge_threads
purge线程,后台线程,致力于innodb清理,资源回收操作。
1、清理操作
1、清理undo页
undo记录修改前的数据用于回滚,已提交的时候,不再回滚,即可清理该undo信息。
2、清理page里面的有“deleted”标签的数据行
1、当我们delete数据行时,是对数据页中要删除的数据行做标记“deleted”,事务提交(速度快);
2、后台线程purge线程对数据页中有“deleted”标签的数据行进行真正的删除。
2、调整依据
1、系统存在大量的delete、对主键的update
mysql> show global status like '%rows%d%ted';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| Innodb_rows_deleted | 0 |
| Innodb_rows_updated | 5 |
+---------------------+-------+
2 rows in set (0.01 sec)
2、mysql> show engine innodb status \G
Trx id counter 1159171 #事务计数
Purge done for trx's n:o < 1157813 #事务清空位置
#1159171-1157813表示有待清空的事务量 undo n:o < 0 #当前清理事务undo位置
state: running but idle #启动但是闲置
History list length 1029 #当前undo数据页的总量1029*16K
3、调整:innodb_purge_threads默认值是1,OLTP系统一般会修改为4
mysql> show variables like '%purge_t%';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| innodb_purge_threads | 4 |
+----------------------+-------+
1 row in set (0.01 sec)
MySQL后台线程的清理工作的更多相关文章
- mysql后台线程详解
1.mysql后台线程 mysql后台线程主要用于维持服务器的正常运行和完成用户提交的任务,主要包括:master thread,read thread,write thread,redo log t ...
- MySQL后台线程整理总结
本文整理自<MySQL技术内幕 InnoDB存储引擎> MySQL通过后台各种线程.内存池.文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务. ...
- 常见mysql后台线程
1.IO THREAD MySQL有很多后台线程 其中包括了负责IO的相关线程IO THREAD 1. 参数innodb_write_io_threads 写线程 默认四个,负责数据块的写入 2 ...
- quatz调度-手动终止线程(2) Cleaner线程做清理工作
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import ja ...
- InnoDB体系架构(一)后台线程
InnoDB体系架构——后台线程 上一篇已经了解了MySQL数据库的体系结构 这一篇除了介绍InnoDB存储引擎的体系架构外,同时进一步了解InnoDB的后台线程. InnoDB存储引擎是多线程的模型 ...
- MySQL学习笔记-数据库后台线程
数据库后台线程 默认情况下讲述的InnoDB存储引擎,以后不再重复声明.后台线程有7个--4个IO thread,1个master thread,1个锁监控线程,1个错误监控线程.IO thread的 ...
- 【温故而知新-万花筒】C# 异步编程 逆变 协变 委托 事件 事件参数 迭代 线程、多线程、线程池、后台线程
额基本脱离了2.0 3.5的时代了.在.net 4.0+ 时代.一切都是辣么简单! 参考文档: http://www.cnblogs.com/linzheng/archive/2012/04/11/2 ...
- C#夯实基础之多线程二:主线程、前台线程与后台线程
我们在<C#夯实基础之多线程一:初识多线程>一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但 ...
- 开源WinForms界面开发框架Management Studio 选项卡文档 插件 Office 2007蓝色风格 后台线程
Management Studio是我在WinForms小项目开发过程中搭建起来的一个插件式结构的应用程序框架,因为简单灵活又容易扩展,现在将它开源供读者参考. 跑起来的效果图如下所示,具备选项卡式多 ...
随机推荐
- SSO框架介绍前篇
SSO全程是single sign on,即单点登录,是一种统一认证和授权机制. 单点登录,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其 ...
- 用java来实现验证码功能(本帖为转载贴),作为个人学习收藏用
一.关于为何使用验证的解释 在目前的网页的登录.注册中经常会见到各种验证码.其目的便是为了:防止暴力破解 .因为只要CPU性能较强,便可以在慢慢尝试密码的过程中来破解用户账号,因而导致的结果是用户信 ...
- 2017年Web前端开发工程师薪资越来越高?
放眼全球,不仅在国内的互联网行业,在国外,前端工程师一样是需求旺盛.供不应求的香饽饽.所以在供不应求的前端招聘市场上,优秀的前端工程师才是有话语权的那一方. 前端开发是做什么的? 前端是互联网时代软件 ...
- javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...
- 深入探索C++对象模型(六)
执行期语意学(Runtime Semantics) 对象的构造和析构(Object Constructor and Destructor) 一般而言,constructor和destructor的安插 ...
- rabbitmq 死信邮箱配置(dead-letter)
DLX,Dead-Letter-Exchange(死信邮箱)利用DLX,当消息在一个队列中变成死信后,它能被重新publish到另一个Exchange,这个Exchange就是DLX.消息变成死信一向 ...
- PHPCMS v9 自定义表单添加验证码
1. 在 \phpcms\templates\default\formguide\show.html 中添加验证码显示 <input type="text" id=&quo ...
- 按enter 进行搜索 enter提交表单
//按enter 进行搜索 document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.keyC ...
- UML简要
一 概述 1.什么是UML? Unified Modeling Language,统一建模语言,用图形化的语言展示事物的结构,为交流与开发提供了便利. 2.UML分类 UML图形主要有用例图.类图.顺 ...
- 如何用JavaScript复制到剪贴板
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...