Innodb存储引擎中的后台线程详解


Posted in MySQL onApril 03, 2022

1.maste thread

负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。

2.IO Thread

负责IO请求的回调处理。

1.0版本之前有4个IO Thread,负责write、read、insert buffer和log IO Thread

1.0.x开始,read thread和write thread分别增加到4个,不再使用innodb_file_io_threads参数,而是使用innodb_read_io_threads和innodb_write_io_threads

mysql> show variables like 'innodb_version'\G
*************************** 1. row ***************************
Variable_name: innodb_version
        Value: 5.6.25
1 row in set (0.00 sec)
 
mysql> show variables like 'innodb_%io_threads'\G
*************************** 1. row ***************************
Variable_name: innodb_read_io_threads
        Value: 4
*************************** 2. row ***************************
Variable_name: innodb_write_io_threads
        Value: 4
2 rows in set (0.00 sec)
 
mysql> show engine innodb status\G
*************************** 1. row ***************************
  Type: InnoDB
  Name:
Status:
=====================================
2015-12-20 21:53:50 7fcaccfe8700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 11 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 93 srv_active, 0 srv_shutdown, 26243 srv_idle
srv_master_thread log flush and writes: 26336
----------
SEMAPHORES
----------
OS WAIT ARRAY INFO: reservation count 393
OS WAIT ARRAY INFO: signal count 347
Mutex spin waits 297, rounds 8910, OS waits 281
RW-shared spins 53, rounds 1590, OS waits 50
RW-excl spins 13, rounds 1860, OS waits 57
Spin rounds per wait: 30.00 mutex, 30.00 RW-shared, 143.08 RW-excl
------------
TRANSACTIONS
------------
Trx id counter 2545
Purge done for trx's n:o < 2540 undo n:o < 0 state: running but idle
History list length 22
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 5, OS thread handle 0x7fcaccfe8700, query id 491 localhost root init
show engine innodb status
--------
FILE I/O
--------
I/O thread 0 state: waiting for i/o request (insert buffer thread)
I/O thread 1 state: waiting for i/o request (log thread)
I/O thread 2 state: waiting for i/o request (read thread)
I/O thread 3 state: waiting for i/o request (read thread)
I/O thread 4 state: waiting for i/o request (read thread)
I/O thread 5 state: waiting for i/o request (read thread)
I/O thread 6 state: waiting for i/o request (write thread)
I/O thread 7 state: waiting for i/o request (write thread)
I/O thread 8 state: waiting for i/o request (write thread)
I/O thread 9 state: waiting for i/o request (write thread)
Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
 ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
915 OS file reads, 1496 OS file writes, 1089 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 276671, node heap has 2 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 369664448
Log flushed up to   369664448
Pages flushed up to 369664448
Last checkpoint at  369664448
0 pending log writes, 0 pending chkp writes
356 log i/o's done, 0.00 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 137363456; in additional pool allocated 0
Dictionary memory allocated 96365
Buffer pool size   8191
Free buffers       53
Database pages     8136
Old database pages 2983
Modified db pages  0
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages made young 9747, not young 4864716
0.00 youngs/s, 0.00 non-youngs/s
Pages read 4212, created 12449, written 13322
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
No buffer pool page gets since the last printout
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 8136, unzip_LRU len: 0
I/O sum[0]:cur[0], unzip sum[0]:cur[0]
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
0 read views open inside InnoDB
Main thread process no. 2345, id 140508950664960, state: sleeping
Number of rows inserted 3919015, updated 0, deleted 0, read 8532141
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
 
1 row in set (0.00 sec)
 
mysql>

3.purge thread

事务提交后,purge thread线程回收已经分配并被使用的undo页。

innodb 1.2开始,支持多个purge thread。

purge thread离散地读取undo页。

mysql> show variables like 'innodb_purge_threads';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| innodb_purge_threads | 1     |
+----------------------+-------+
1 row in set (0.00 sec)
 
mysql>

4.page cleaner thread

1.2.x版本中引入的。将之前版本中脏页的刷新操作都放入到单独的线程中来完成。减轻master thread的工作。

总结

到此这篇关于Innodb存储引擎中后台线程的文章就介绍到这了,更多相关Innodb后台线程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
MySQL表的增删改查(基础)
Apr 05 MySQL
mysql多表查询-笔记七
Apr 05 MySQL
MySQL 使用事件(Events)完成计划任务
May 24 MySQL
SQL注入的实现以及防范示例详解
Jun 02 MySQL
MySQL 不等于的三种使用及区别
Jun 03 MySQL
MySQL 时间类型的选择
Jun 05 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
MySQL8.0升级的踩坑历险记
Nov 01 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
MySQL中int (10) 和 int (11) 的区别
Jan 22 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
MySQL磁盘碎片整理实例演示
Mysql使用全文索引(FullText index)的实例代码
Apr 03 #MySQL
一文简单了解MySQL前缀索引
为什么MySQL不建议使用SELECT *
详解MySQL的主键查询为什么这么快
MySQL表锁、行锁、排它锁及共享锁的使用详解
navicat 连接Ubuntu虚拟机的mysql的操作方法
You might like
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
session 加入redis的实现代码
2016/07/15 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
JS原型继承四步曲及原型继承图一览
2017/11/28 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
C语言编程练习
2012/04/02 面试题
八一建军节演讲稿
2014/09/10 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
大学生军训感言
2015/08/01 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
导游词之桂林山水
2019/09/20 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python