当前位置:网站首页>MYSQL-InnoDB的线程模型
MYSQL-InnoDB的线程模型
2022-07-30 05:23:00 【三3三】
今天和大家分享InnoDB的线程模型相关知识
在MYSQL中,有很多的线程,主要作用是负责刷新chang buffer、buffer pool、log buffer等内存池中的数据,将磁盘上的数据页加载到内存当中,并且保持磁盘中的数据是最新的状态,另外在内存当中对数据进行修改之后,需要将脏页进行刷盘操作,还有数据库发生异常,需要进行数据回滚操作等等,都是通过后台线程进行处理的,下面就和大家介绍主要的相关线程。

InnoDB线程主要分为四种,分别是Master Thread、IO Thread、Purge Thread、Page Cleaner Thread。
1. IOThread
作用: 主要是用做读写处理
我们可以通过命令show engine innodb status;来查看读写线程的相关状态,执行之后的数据页面如下:
read Thread: 负责读取操作,将数据从磁盘加载到内存中page页中(有4个)
write Thread: 负责写操作,将脏页刷新到磁盘(有4个)
log Thread: 负责将日志缓冲区内容刷新到磁盘(有1个)
insert buffer Thread: 负责将写缓冲区内容刷新到磁盘(有1个)
2. Purge Thread
作用: 用于事务提交之后回收undo页
我们可以通过命令%innodb_purge_threads%;来查看该线程的数量,执行之后的页面如下:
我们可以看到,默认设置的purge thread的数量是4个,这样可以更快的回收undo页。
3. Page Cleaner Thread
作用: 将脏数据刷新到磁盘
我们可以通过命令%innodb_page_cleaners%;来查看该线程的数量,默认是1。
注意: page cleaner thread其实是会调用write thread线程来进行写操作
4. Master Thread
作用: InnoDB的主线程,负责调用其他的线程,优先级最高。
该线程会定时处理数据,每一秒会执行一些操作,每十秒也会执行一些操作,具体执行哪些操作呢?
每一秒的操作:
1.刷新脏页数据到磁盘,根据脏页比例达到75%才操作。我们可以通过命令show variables like 'innodb_max_dirty_pages_pct;'来查看刷新脏页百分比配置,执行命令后的页面如下:
那么达到刷新比例要求,会刷新多少脏页数据到磁盘呢,我们可以通过show innodb_io_capacity;命令查看刷新容量大小:
默认是200
2.合并写缓冲区数据:如果一秒的IO次数小于5,认为IO的压力较小,可以执行合并缓冲区的操作(可能会做)。
3.刷新日志缓冲区:即使事务没有提交,InnoDB也会每秒将重做日志缓冲区的内容刷新到重做日志文件中。(一定会做)
每10秒的操作:
1.刷新脏页数据到磁盘,刷新的脏页数量为innodb_io_capacity(可能会做)
2.合并写缓冲区的数据,合并写缓冲区的大小是innodb_io_capacity的5%(一定会做)
3.刷新日志缓冲区(一定会做)
4.删除无用的undo页(一定会做)
边栏推荐
- [Verilog] HDLBits Problem Solution - Circuits/Combinational Logic
- C语言中的基本库函数(qsort)
- 参与开源,让程序员找回热血和激情
- Participate in open source, let programmers regain their blood and passion
- 无代码开发平台子管理员入门教程
- Hexagon_V65_Programmers_Reference_Manual (14)
- 【Vitis】ZCU102开发板PS端控制PL端复位的代码实现
- 1475. 商品折扣后的最终价格
- 容器化 | 在 KubeSphere 中部署 MySQL 集群
- 工具 | 常用 PostgreSQL 预防数据丢失方案
猜你喜欢
随机推荐
给小白的 PostgreSQL 容器化部署教程(上)
mysql cannot connect remotely Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10060 "Unknown error")
微信支付及支付回调
工具 | 常用 PostgreSQL 预防数据丢失方案
nacos-2.0.3启动报错出现no datasource set的坑
429. N 叉树的层序遍历(两种解法)
MySQL如何对SQL做prepare预处理(解决IN查询SQL预处理仅能查询出一条记录的问题)
路径依赖:穷人很难逆袭突破的科学道理
力扣05-替换空格——字符串问题
Kyligence 出席华为全球智慧金融峰会,加速拓展全球市场
RadonDB MySQL on K8s 2.1.3 发布!
RadonDB MySQL on K8s 2.1.4 发布!
An old programmer's summary review of 2020, how to become more awesome in 2021
golang八股文整理(持续搬运)
Unity踩坑记录 —— GetComponent的使用
Kyligence 再获 CRN, insideBIGDATA 两大国际奖项认可
MySQL - Function and Constraint Commands
Codeforces Round #809 (Div. 2) A~D
mysql basics (4)
Golang——从入门到放弃












