当前位置:网站首页>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页(一定会做)
边栏推荐
猜你喜欢

JVM之GC 调优基础知识(一)

从驱动表和被驱动表来快速理解MySQL中的内连接和外连接

curl (7) Failed connect to localhost8080; Connection refused

MySQL Basics (DDL, DML, DQL)

SQL连接表(内连接、左连接、右连接、交叉连接、全外连接)

Participate in open source, let programmers regain their blood and passion

GO语言学习笔记一

mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)

MySQL - Function and Constraint Commands

【Vitis】ZCU102开发板PS端控制PL端复位的代码实现
随机推荐
视野 | KeyDB:为 Web 应用而生的高性能 Redis 分支
mysql cannot connect remotely Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (10060 "Unknown error")
解读 Kylin 3.0.0 | 更敏捷、更高效的 OLAP 引擎
mysql高阶语句(一)
RadonDB MySQL on K8s 2.1.2 发布!
MySQL索引从入门到深入学习
el-table中加入el-input框和el-input-number框,实现el-table的可编辑功能
力扣05-替换空格——字符串问题
剑指offer(刷题篇12)
Within the SQL connection table (link connections, left or right, cross connection, full outer join)
(Hexagon_V65_Programmers_Reference_Manual(13)
容器化 | 在 KubeSphere 中部署 MySQL 集群
go语言学习笔记四
为Bitbucket 和 Sourcetree 设置SSL认证
Programmers care guide, give yourself a chance to make the occasional relaxation of body and mind
Concurrent Programming Review
mysql basics (4)
Hexagon_V65_Programmers_Reference_Manual(10)
JVM之GC 调优基础知识(一)
一文带你吃透js处理树状结构数据的增删改查



