第二章:InnoDB存储引擎

《MySQL 技术内幕》第二章笔记:InnoDB 存储引擎 InnoDB 存储引擎零、命令和参数一、概述二、InnoDB 体系架构1、后台线程2、内存2.1、缓冲池2.2、LRU List、Free List 和 Flush List2.3、redo log buffer三、Checkpoint 技术1、Write Ahead Log2、checkpoint四、Master Thread五、InnoDB 关键特性(重点)1、插入缓冲(Insert Buffer)— 性能提升1.1、Insert Buffer(?)1.2、Change Buffer1.3、Insert 阅读详情

概述:

 

InnoDB存储引擎版本

 

InnoDB体系结构

InnoDB存储引擎有很多内存块,构成了一个大的内存池

后台线程

innodb是多线程的,不同后台线程处理不同任务。

Master Thread

 

IO Thread:

负责IO请求的回调处理。

Purge Thread:

事务被提交后,其所使用的undolog可能不再需要,该线程来回收已经使用并分配的undo页

Page Cleaner Thread:

将之前版本的脏页刷新操作都放入到单独的线程中完成。

内存

缓冲池

基于磁盘存储,以页方式管理。将从磁盘中读出的页存放在缓存池中。下次读到相同的页时,先判断是否在缓存池中,无则读取磁盘上的页。

修改页:先修改缓存池中的页,再将其刷新到磁盘中。(CheckPoint机制)

数据页类型有:索引页,数据页,undo页,插入缓冲等。

允许有多个缓冲池实例,增强数据库并发能力 。

 

LRU List,Free List,Flush List

LRU算法来管理缓冲池。将新页加入midpoint位置,在LRU列表的5/8处。old列表,midpoint,new列表(最为活跃的热点数据)。

问题:为什么不使用朴素的LRU算法?

 

innodb_old_blocks_time,表示新页会在多久之后加入LRU列表中的热端。

LRU列表管理已经读取的页,开始时所有的页都在Free列表中,先从Free列表中查找有无可用的空闲表,在Free中删除它,将它加入LRU列表中。

page made young:将页从LRU列表的old部分加入到new部分。

page not made young:因为innodb_old_blocks_time的原因,页没有从old移到new。

Free buffers +Database pages < Buffer pool size。

Buffer pool hit rate缓存池命中率,越接近缓存池运行状态越良好。

LRU列表中的页(存在于LRU列表中)被修改后,该页被称为脏页,即缓存池中的页与磁盘中的页数据不一致。

Flush列表中的页即为脏页列表。

重做日志缓存(redo log buffer)

将重做日志信息先放入到这个缓存区中,然后将其刷新到重做日志文件中。

 

额外的内存池

对内存的管理是通过一种称为内存堆的方式进行。即对一些数据结构本身的内存进行分配时,先从额外的内存池申请。该区域内存不够再去缓存池中申请。

Checkpoint技术

产生了脏页,将新版本的页从缓冲池中刷新到磁盘。(checkpoint是什么)

当事务提交时,先写重做日志,再修改页。若发生菪机,可通过重做日志进行恢复。

通过重做日志来恢复整个数据库系统的数据到宕机时刻的条件:

1.缓冲池可以缓存数据库中所有的数据

2、重做日志可以无限增大

3.宕机后数据库恢复的时间应该不能太久。

checkpoint技术的目的:

 数据库发生宕机不需要重做所有日志,因为checkpoint之前的页都已经刷新到了数据库中。只需要对checkpoint后的重做日志进行恢复。

此外,缓冲此不够时,LRU溢出最近最少使用的页,若该页是脏页,checkpoint即强制将其刷新回磁盘。

重做日志不可用的原因:当前事务数据库系统对重做日志的设计都是循环使用的,而非无限增大,只能将其覆盖重用。

两种checkpoint:

1.Sharp checkpoint:在数据库关闭时将所有脏页刷新回磁盘。。

2.Fuzzy checkpoint:只刷新一部分脏页。

.Fuzzy checkpoint还可再分:

 Master Thread工作方式

Loop:

 

 

 background loop

 若flush loop中也没有什么事情可以做了,InnoDB存储引擎会切换到suspend_loop,将Master Thread挂起,等待事件的发生。若用户启用(enable)了InnoDB存储引擎,却没有使用任何InnoDB存储引擎的表,那么Master Thread总是处于挂起的状态。

innodb_io_capacity 表示磁盘IO吞吐量。

 InnoDB关键特性(没太懂)


2.6.1插入缓冲

2.6.2两次写

2.6.3自适应哈希索引

2.6.4异步lO

2.6.5刷新邻接页

启动、关闭与恢复
 

Mysql技术内幕InnoDB存储引擎——InnoDB存储引擎 特此申明: 前段时间找工作所以看了《Mysql技术内幕InnoDB存储引擎》,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处。不过无所谓啦,写出来自己看看,需要的朋友参考下,仅此而已。 一.mysql体系结构和存储引擎 1.1、数据库和实例的区别          数据库:物理操作系统或其他形式文件类型的集合。在mysql下数据库文件可以是frm, 阅读详情

相关推荐

iPad秒变Mac副屏的隐藏技巧:用BetterDisplay实现无线竖屏+90度锁定

本文详细介绍了如何利用BetterDisplay软件突破苹果原生“随航”(Sidecar)功能的限制,将iPad无线设置为Mac的竖屏副屏,并实现90度方向锁定。通过创建虚拟显示器、配置分辨率与旋转参数,并校准鼠标指针,用户可以高效利用iPad的纵向空间进行文档阅读、编码等工作,显著提升多屏协作效率。

weixin_29266647的博客 603

MySQL neighbor flush_InnoDB存储引擎

第2章InnoDB存储引擎-一.InnoDB存储引擎的版本MySQL版本版本功能MySQL5.1老版本的InnoDB支持ACID(原子性、一致性、隔离性、持久性)、行锁设计、MVCC(多版本并发控制技术)InnoDB 1.0.x继承上述版本所有功能,增加了compress(压缩)和dynamic(动态)页格式MySQL5.5InnoDB 1.1.x继承上述版本所有功能,增加了Linux AIO、多...

weixin_35895753的博客 400

LTE信令流程——切换

LTE信令流程 切换 切换是由基站发起的,不同于小区重选,小区重选是由UE发起的。 基站利用移动性管理算法给UE下发测量任务,在RRC重配置消息中携带MeasConfig信元给UE下发测量配置 切换有三种场景: 同一基站内不同小区的切换 不同基站间基于X2的切换(MME不变) 不同基站间基于S1的切换(MME/SGW可能改变) 1. 同一基站内不同小区的切换 连接态的UE在一个基站的不同小区之间移动 UE上报合适的测量报告(Measure Reports),触发基站切换 基站下发切换命令给UE,

Hxx的博客 1万+

MySQL高级进阶(三)、InnoDB存储引擎详解

小景哥哥博客 InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracle数据库的架构。通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎。其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地使用内存和CPU。 后台线程 ​ InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。Master Thread是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并

JingLisen的博客 1711

nnDetection复现Luna16 附模型

淘论文发现nnDetection框架对肺结节的检测效果挺好,便跑了跑复现了下, 作者诚不欺人,确实挺好, 并附上我依据文档训练的模型。

HeavenWalker 2596

保姆级教程:用MATLAB复现格拉斯哥大学FMCW雷达数据集多普勒谱(附完整代码与避坑指南)

本文提供了一份详细的MATLAB教程,指导如何复现格拉斯哥大学FMCW雷达数据集的多普勒谱分析。从环境准备、数据获取到距离压缩、MTI滤波、时频分析(STFT)以及结果后处理,涵盖了完整流程,并附有优化代码和避坑指南,特别适合雷达信号处理研究者和工程师。

weixin_28720767的博客 115

MySQL之Innodb

InnoDB体系架构: InnoDB存储引擎有多个内存块,这些内存块组成了一个大的内存池,负责 1.维护所有的进程、线程访问的多个内部数据结构 2.缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据修改之前在此处缓存 3.重做日志缓存 后台线程 后台线程的主要作用是负责刷新缓存池中的数据,保证缓存池中的内存缓存是最近的数据,同时将脏页刷回磁盘。 1.Master Thread Master Thread顾名思义是非常核心的线程,主要负责将缓存池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新

二豪码字 4121

第五章:转矩脉动的成因与抑制技术:从根源到解决方案

本文摘要: 转矩脉动是电机运行中的关键问题,涉及电磁、机械和控制三大因素。电磁因素包括谐波、齿槽转矩和磁饱和;机械因素涵盖动平衡和轴承缺陷;控制因素涉及测量误差和死区效应。解决方案采用多层面优化:硬件上通过斜极设计和死区补偿(提供算法代码)降低脉动70%;控制上采用扰动观测器和谐振控制器进行动态抑制;针对齿槽转矩开发离线学习+在线查表补偿方案。测试环节建立振动噪声量化评价体系,包括加速度计测量和A计权声学评估。最终形成从设计到控制的系统化抑制策略,显著提升电机静音性、平顺性和寿命。

汽车软件开发 338

InnoDB存储引擎 Ch1-2简介

第1章 数据库:物理操作系统文件或其他形式文件类型的集合。 实例:MySQL数据库由后台线程和一个共享内存区组成。 MySQL是一个单进程多线程架构的数据库。 MySQL最大特点:插件式的表存储引擎。存储引擎是基于表的,不是数据库。 第2章 InnoDB存储引擎 版本 SHOW VARIABLES LIKE 'innodb_version'; +----------------+--------+ | Variable_name | Value | +----------------+--------+

qq_41009458的博客 258

跨平台C#上位机开发:.NET MAUI与工业物联网的融合实战

NET MAUI正在重塑工业上位机的开发模式——从“为单一设备定制”转向“全场景覆盖”。其价值不仅在于“代码复用”,更在于打通了工业物联网的“最后一公里”:让边缘设备、云平台、移动终端通过统一的数据模型协同工作。未来,随着.NET MAUI对WebAssembly的支持(计划在.NET 9实现),上位机甚至可直接运行在浏览器中,进一步降低部署门槛。对于工业开发者,掌握跨平台技术意味着能更快响应多样化的现场需求,从“Windows专家”升级为“全栈工业开发者”。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1088

Flow Matching05:概率路径与插值【概率路径:线性插值路径(最简单)、高斯插值路径】【先尝试线性插值,看效果如何;若不够好,尝试高斯插值】

好的,我将从数学角度详细解释Flow Matching,从高中生能理解的基础知识开始,逐步深入到高级概念。

u013250861的博客 173

读书笔记:第二章 innodb存储引擎

innodb是事务安全的MySQL存储引擎。 设计上采用类似于oracle数据库的架构。 通常来讲,innodb存储引擎是OLTP应用中首选的存储引擎。 2.1 innodb存储引擎概述   从MySQL5.5版本开始,innodb存储引擎就被当做默认的表存储引擎(之前版本只有在windows下才是默认的表存储引擎)。 该存储引擎是第一个完整支持ACID事务的mysql

leo6265的博客 434

微信小程序 - 最新详细实现模板消息订阅通知功能,给用户微信发送“服务通知“模板消息并点击进入跳转到小程序页面路由,订阅消息通知详细后台申请流程及示例代码,解决授权申请弹框被拒绝后无法调起、常见报错!

微信小程序,vue2,vue3,模板消息,订阅通知,服务通知,小程序模板通知,订阅微信模板消息功能,唤起模板消息订阅弹框并发送服务通知,消息订阅与模板消息发送,一次性订阅,长期永久订阅,申请模板id,详细示例代码教程,配置流程,消息模板,模板ID,用户收不到消息,订阅了通知但微信不来服务通知,报错,小程序平台模板消息订阅功能,唤起订阅模板消息弹框,订阅模板消息发送服务通知功能,如何做模板消息订阅,一直收不到通知,用户通过弹窗订阅,订阅消息,无法打开申请授权弹框,用户拒绝/关闭后,如何引导用户再开启,拒绝后怎

🏆 前端领域优质创作者 5329

MYSQL复习——第二章:Innodb存储引擎(线程+内存+Innodb特性)

2.1 Innodb的后台线程 Master Thread *1 —— 详细介绍 IO Thread *4+4 —— 4个write,4个read,1个insert buffer,1个log thread Purge Thread(资源清理) *1 Page Cleaner Thread(刷新脏页) *1 Master Thread 主线程 四个循环: 主循环分成两部分,一部分是每一秒钟要做的事情,另一部分是每10秒钟要做的事情: 工作 解释 是否必须 属于

qq_41157876的博客 328

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《MySQL技术内幕:InnoDB存储引擎》学习笔记-第二章

《MySQL技术内幕:InnoDB存储引擎》学习笔记-第二章

玉帝 917

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

mysql技术内幕_mysql技术内幕学习笔记-第二章:Innodb存储引擎

Innodb存储引擎的后台线程:① I/O thread② master thread③ 锁监控线程④ 错误监控线程内存① 缓冲池 :所占的内存最大,innodb存储引擎的工作方式是将数据库文件按页读取到缓冲池,使用最近最少使用算法保留缓冲池中的数据。当数据发生改变时(uodate、delete等),总是先修改缓冲池中的页(修改后即为脏页),然后按照一定的频率将脏页刷新到数据库文件中。② 重做日...

weixin_29144939的博客 160

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MyISAM和InnoDB存储引擎的区别

MyISAM和InnoDB存储引擎的区别

wtl666_6的博客 8622

【MySQL】存储引擎 - InnoDB详解

本篇博文对【MySQL】存储引擎 - InnoDB详解做了一个较为详细的介绍,不知道对你有没有帮助呢觉得博主写得还不错的三连支持下吧!会继续努力的~

2301_77954967的博客 2792

【MySQL】InnoDB存储引擎

对数据的修改操作,首先修改内存结构中的缓冲区的页,缓冲区的页与磁盘中页的数据不一致,因此称缓冲区中的页为脏页。

见见大魔王 4644

【InnoDB存储引擎1】InnoDB存储引擎简介

认证、分配连接、管线程。

2301_80224556的博客 1000

innodb存储引擎

文章目录1.innodb存储引擎概述2.innodb体系架构2.1后台线程2.2内存1.缓冲池2.LRU list 和 Flush list 和Free list3.重做日志缓冲4.额外的内存池2.4Checkpoint技术2.5Master Thread工作方式2.5.1innodb 的master thread2.6innodb关键特性2.6.1插入缓冲 insert buffer1.inse...

菜鸟腾飞 6960

Mysql 技术内幕 Innodb存储引擎 第二章 Innodb存储引擎

第二章 Mysql体系结构和存储引擎。

weixin_44472484的博客 1014

Mysql的存储引擎(InnoDB篇)

存储引擎是数据库管理系统中对数据存储和访问的核心组件。它定义数据如何存储,索引,检索以及如何事务性地更新。不同的存储引擎提供不同的功能与特性,优化不同的负载。:存储引擎决定了数据在磁盘上的存储方式,包括数据的物理格式和存储结构。:存储引擎提供了创建和管理索引的方法,以加速数据检索。:存储引擎支持事务的ACID属性(原子性、一致性、隔离性、持久性)。:存储引擎管理多个用户或进程对数据的并发访问,以防止数据损坏。:存储引擎必须能够处理系统崩溃,确保数据的完整性和一致性。:存储引擎支持数据的备份和恢复操作。

2401_85207246的博客 2104

MySQL技术内幕 - 第二章 InnoDB存储引擎

一、InnoDB 存储引擎概述 InnoDB 存储引擎最早由 Innobase Oy 公司旰发,被包括在 MySQL 数据库所有的二进制发行版本中,从 MySQL 5.5 版本开始是默认的表存储引擎(之前的版本 InnoDB 存储引擎仅在 Windows 下为默认的存储引擎)。该存储引擎是第一个完整支持 ACID 事务的 MySQL 存储引擎(BDB 是第一个支持事务的 MySQL 存储引擎,现在已经停止开发),其特点是行锁设计、支持 MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地利用以及使

SongYu的博客 1万+

MySQL技术内幕 InnoDB存储引擎——第2章 InnoDB存储引擎(未完待续)

第2章 InnoDB存储引擎 2.1 InnoDB存储引擎概述 InnoDB存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发)。 特点: 行锁设计 支持MVCC 支持外键 提供一致性非锁定读 被设计用来最有效地利用以及使用内存和CPU 2.2 InnoDB存储引擎的版本 MySQL 5.1版本中支持两个版本的InnoDB,一个是静态编译的InnoDB版本(老版本的InnoDB);另一个是动态加载的InnoDB版本(InnoDB Plu

页页的博客 4983
上一篇: 第一章MySQL
下一篇: 单例模式qq
叮叮咚咚666666
博客等级 码龄6年 13粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值