MySQL底层概述—3.InnoDB线程模型

大纲

1.InnoDB的线程模型

2.IO Thread

3.Purge Thread

4.Page Cleaner Thread

5.Master Thread

1.InnoDB的线程模型

InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。

后台线程的作用一:负责刷新内存池中的数据,保证缓冲池中的内存缓存是最新的数据。

后台线程的作用二:将已修改的数据页刷新到磁盘文件,保证发生异常时能恢复到正常状态。

图片

2.IO Thread

IO Thread主要用于:读取数据页 + 写入脏页 + 写入日志缓冲 + 写入写缓冲。InnoDB使用了大量的AIO(Async IO)来做读写处理,可以极大提高性能。在InnoDB之前的版本只有4个IO Thread:分别是Read、Write、Insert Buffer和Log Thread。后来版本将Read Thread和Write Thread分别增大到了4个,一共有10个。

mysql> show engine innodb status;--------FILE I/O--------I/O thread 0 state: waiting for completed aio requests (insert buffer thread)I/O thread 1 state: waiting for completed aio requests (log thread)I/O thread 2 state: waiting for completed aio requests (read thread)I/O thread 3 state: waiting for completed aio requests (read thread)I/O thread 4 state: waiting for completed aio requests (read thread)I/O thread 5 state: waiting for completed aio requests (read thread)I/O thread 6 state: waiting for completed aio requests (write thread)I/O thread 7 state: waiting for completed aio requests (write thread)I/O thread 8 state: waiting for completed aio requests (write thread)I/O thread 9 state: waiting for completed aio requests (write thread)

Read Thread负责读操作,将数据从磁盘加载到缓存,4个。Write Thread负责写操作,将缓存脏页刷新到磁盘,4个。Log Thread负责将日志缓冲区内容刷新到磁盘,1个。Insert Buffer Thread负责将写缓冲内容刷新到磁盘,1个。

3.Purge Thread

事务提交后,其使用的undo日志将不再需要了,因此需要Purge Thread回收已经分配的undo页。InnoDB支持多个Purge Thread,以便能加快回收undo页,释放内存。​​​​​​​

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

4.Page Cleaner Thread

Page Cleaner Thread的作用是:刷脏页 + 清理redo log日志文件。也就是将脏数据刷新到磁盘,脏数据刷盘后相应的redo log就可以被覆盖了。既可以同步数据,又能让redo log达到循环使用的目的。

其中Page Cleaner Thread会调用Write Thread线程进行处理。​​​​​​​

mysql> show variables like '%innodb_page_cleaners%';+----------------------+-------+| Variable_name        | Value |+----------------------+-------+| innodb_page_cleaners | 1     |+----------------------+-------+

5.Master Thread

(1)Master Thread的具体工作

(2)Master Thread的定时处理

Master Thread是InnoDB的主线程,负责调度其他各线程,优先级最高。作用是:定时刷脏页 + 回收undo log + 写入redo log + 合并写缓冲。

(1)Master Thread的具体工作

一.调用Page Cleaner Thread进行脏页的刷新

二.调用Purge Thread进行undo log的回收

三.调用Log Thread进行redo log的刷新

四.调用Insert Buffer Thread进行合并写缓冲

(2)Master Thread的定时处理

Master Thread内部有两个定时处理,分别是每隔1秒和10秒的定时处理。

一.每隔1秒的操作

操作1:每秒刷新脏页数据到磁盘,但需要脏页比例达到75%才操作

innodb_io_capacity用来表示IO的吞吐量,默认200。对于刷新到磁盘页的数量,会按照innodb_io_capacity的百分比来控制。从缓冲池刷新脏页时,刷新脏页的数量为innodb_io_capcity。​​​​​​​

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

如果缓冲池中脏页比例大于innodb_max_dirty_pages_pct(默认75%):刷新脏页到磁盘的数量是innodb_io_capacity的值。​​​​​​​

mysql> show variables like 'innodb_max_dirty_pages_pct';+----------------------------+-----------+| Variable_name              | Value     |+----------------------------+-----------+| innodb_max_dirty_pages_pct | 75.000000 |+----------------------------+-----------+

操作2:每秒合并写缓冲区的数据

其实并不是每秒都会合并写缓冲区数据的。如果前一秒的IO次数小于5,则认为IO压力小,可执行合并插入缓冲操作。

操作3:每秒刷新日志缓冲区到磁盘

即使事务没有提交,也会每秒将重做日志缓冲刷新到重做日志文件中。因此可以理解为什么再大再长的事务提交,时间也是很短的。

二.每隔10秒的操作

操作1:每10秒刷新脏页数据到磁盘

从缓冲池刷新脏页时,脏页的数量为innodb_io_capcity。

操作2:每10秒合并写缓冲区

合并插入缓冲是innodb_io_capacity的5%。

操作3:每10秒刷新日志缓冲区

操作4:每10秒删除无用的undo页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/60882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pikachu平台xss漏洞详解

声明:文章只是起演示作用,所有涉及的网站和内容,仅供大家学习交流,如有任何违法行为,均和本人无关,切勿触碰法律底线 文章目录 概述:什么是xss一、反射型XSS1. get2. post 二、存储型XSS三、DOM…

Easyexcel(7-自定义样式)

相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽)Easyexcel(6-单…

通用网络安全设备之【防火墙】

概念: 防火墙(Firewall),也称防护墙,它是一种位于内部网络与外部网络之间的网络安全防护系统,是一种隔离技术,允许或是限制传输的数据通过。 基于 TCP/IP 协议,主要分为主机型防火…

对于GC方面,在使用Elasticsearch时要注意什么?

大家好,我是锋哥。今天分享关于【对于GC方面,在使用Elasticsearch时要注意什么?】面试题。希望对大家有帮助; 对于GC方面,在使用Elasticsearch时要注意什么? 1000道 互联网大厂Java工程师 精选面试题-Java…

[仓颉Cangjie刷题模板] 优先队列(含小顶堆实现)

[TOC]([仓颉Cangjie刷题模板] 优先队列(含小顶堆实现) ) 一、 算法&数据结构 1. 描述 堆是一个可以维护实时最大/最小值的数据结构,相比treeset等常数优很多。 常用于维护一组数据的极值贪心问题。2. 复杂度分析 初始化O(n)查询O(1)修改O(lgn) 3. 常见应用…

解决 MySQL 5.7 安装中的常见问题及解决方案

目录 前言1. 安装MySQL 5.7时的常见错误分析1.1 错误原因及表现1.2 错误的根源 2. 解决方案2.1 修改YUM仓库配置2.2 重新尝试安装2.3 处理GPG密钥错误2.4 解决依赖包问题 3. 安装成功后的配置3.1 启动MySQL服务3.2 获取临时密码3.3 修改root密码 4. 结语 前言 在Linux服务器上…

计算机网络 网络安全基础——针对实习面试

目录 网络安全基础你了解被动攻击吗?你了解主动攻击吗?你了解病毒吗?说说基本的防护措施和安全策略? 网络安全基础 网络安全威胁是指任何可能对网络系统造成损害的行为或事件。这些威胁可以是被动的,也可以是主动的。…

oracle小技巧-解决特殊密码字符而导致的exp错误

在使用oracle数据库的时候,我们经常会利用exp工具对某些表进行导出。但有些时候,因我们用户密码为安全性设有特殊字符,导致exp导出时候报:“EXP-00056和ORA-12154”,今天我们就分享下如何通过设置符号隔离的小技巧解决…

Taro 鸿蒙技术内幕系列(三) - 多语言场景下的通用事件系统设计

基于 Taro 打造的京东鸿蒙 APP 已跟随鸿蒙 Next 系统公测,本系列文章将深入解析 Taro 如何实现使用 React 开发高性能鸿蒙应用的技术内幕 背景 在鸿蒙生态系统中,虽然原生应用通常基于 ArkTS 实现,但在实际研发过程中发现,使用 C…

带有悬浮窗功能的Android应用

android api29 gradle 8.9 要求 布局文件 (floating_window_layout.xml): 增加、删除、关闭按钮默认隐藏。使用“开始”按钮来控制这些按钮的显示和隐藏。 服务类 (FloatingWindowService.kt): 实现“开始”按钮的功能,点击时切换增加、删除、关闭按钮的可见性。处…

ML 系列:第 36 节 — 统计学中的抽样类型

ML 系列:第 36 天 — 统计学中的抽样类型 文章目录 一、说明二、抽样方法三、简单随机抽样四、 Stratified Sampling分层抽样五、 Cluster Sampling 整群抽样六、Systematic Sampling系统抽样七、Convenience Sampling便利抽样八、结论 一、说明 统计学中的抽样类型…

CGMA – Cloth Creation and Simulation for Real-Time

CGMA – 实时布料创建和模拟 Info: 本课程介绍如何将 Marvelous Designer 整合到布料工作流程中以实时创建角色,从软件基础知识到创建逼真和风格化服装的高级技术。本课程将首先介绍软件,通过创建现代、现代的服装,然后深入探讨使…

Springboot组合SpringSecurity安全插件基于密码的验证Demo

Springboot组合SpringSecurity安全插件基于密码的验证Demo!下面的案例&#xff0c;都是基于数据库mysql&#xff0c;用户密码&#xff0c;验证登录的策略demo。 1&#xff1b;引入maven仓库的坐标 <dependency><groupId>org.springframework.boot</groupId>…

从Full-Text Search全文检索到RAG检索增强

从Full-Text Search全文检索到RAG检索增强 时光飞逝&#xff0c;转眼间六年过去了&#xff0c;六年前铁蛋优化单表千万级数据查询性能的场景依然历历在目&#xff0c;铁蛋也从最开始做CRUD转行去了大数据平台开发&#xff0c;混迹包装开源的业务&#xff0c;机缘巧合下做了实时…

单片机学习笔记 8. 矩阵键盘按键检测

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘 目录 0、实现的…

【AI日记】24.11.26 聚焦 kaggle 比赛

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 核心工作 1 内容&#xff1a;研究 kaggle 比赛时间&#xff1a;3 小时 核心工作 2 内容&#xff1a;学习 kaggle 比赛 Titanic - Machine Learning from Disaster时间&#xff1a;4 小时备注&#xff1a;这…

排序算法2

排序算法1-CSDN博客 排序算法1中提及的是较为基础(暴力实现&#xff0c;复杂度较高)的排序算法&#xff0c;不适合于数据量较大的场景&#xff0c;比如序列长度达到1e5 接下来以蓝桥另一道题目来理解其它的排序算法 蓝桥3226 蓝桥账户中心 样例 5 1 5 9 3 7 4、快速排序 快速排…

【数据结构实战篇】用C语言实现你的私有队列

&#x1f3dd;️专栏&#xff1a;【数据结构实战篇】 &#x1f305;主页&#xff1a;f狐o狸x 在前面的文章中我们用C语言实现了栈的数据结构&#xff0c;本期内容我们将实现队列的数据结构 一、队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端…

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色&#xff0c;与整体不协调。 修改方式如下&#xff1a;

长三角文博会:Adobe国际认证体系推动设计人才评价新标准

2024年11月22日&#xff0c;由上海、江苏、浙江、安徽三省一市党委宣传部共同发起的第五届长三角文化博览会&#xff08;简称“长三角文博会”&#xff09;在上海国家会展中心盛大启幕。长三角文博会自2018年起已成功举办多届&#xff0c;已成为展示区域文化产业发展成果、推动…