InnoDB引擎

一、逻辑存储结构

① 表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。

② 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个Extent(区)。

③ 区,表空间的单元结构,每个区的大小为1M。默认情况下,InnoDB存储引擎页大小为16K,即一个区中一共有64个连续的页。

④ 页,是InnoDB存储引擎磁盘管理的最小单元,每个页的大小默认为16KB。为了保证页的连续性,InnoDB存储引擎每从磁盘申请4-5个区。一页包含若干行。

⑤ 行,InnoDB存储引擎数据是按进行存放的。

二、架构 

2.1  内存结构

2.1.1  Buffer Pool

        Buffer Pool:缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频率刷新到磁盘,从而减少磁盘I0,加快处理速度。

2.1.2  Change Buffer

        Change Buffer:更改缓冲区(针对于非唯一二级索引页),在执行DML语句时,如果这些数据Page没有在Buffer Pool中,不会直接操作磁盘,而会将数据变更存在更改缓冲区Change Buffer 中,在未来数据被读取时,再将数据合并恢复到Buffer Pool中,再将合并后的数据刷新到磁盘中。

Change Buffer的意义是什么?
        与聚集索引不同,二级索引通常是非唯一的,并且以相对随机的顺序插入二级索引。同样,删除和更新可能会影响索引树中不相邻的二级索引页,如果每一次都操作磁盘,会造成大量的磁盘IO。有了ChangeBuffer之后,我们可以在缓冲池中进行合并处理,减少磁盘IO。

2.1.3  Adaptive Hash Index

Adaptive Hash Index:自适应hash索引,用于优化对Buffer Pool数据的查询。InnoDB存储引擎会监控对表上各索引页的查询,如果观察到hash索引可以提升速度,则建立hash索引,称之为自适应hash索引。
自适应哈希索引,无需人工干预,是系统根据情况自动完成。参数: adaptive_hash_index
 

2.1.4  Log Buffer

Log Buffer:日志缓冲区,用来保存要写入到磁盘中的log日志数据( redo log . undo log),默认大小为16MB,日志缓冲区的日志会定期刷新到磁盘中。如果需要更新、插入或删除许多行的事务,增加日志缓冲区的大小可以节省磁盘l/O。
参数:
innodb_log_buffer_size:缓冲区大小
innodb_flush_log_at_trx_commit:日志刷新到磁盘时机
 

2.2  磁盘结构

2.2.1  System Tablespace

System Tablespace:系统表空间是更改缓冲区的存储区域。如果表是在系统表空间而不是每个表文件或通用表空间中创建的,它也可能包含表和索引数据。(在MySQL5.x版本中还包含InnoDB数据字典、undolog等)
参数: innodb_data_file_path
 

2.2.2  File-Per-Table Tablespaces

File-Per-Table Tablespaces:每个表的文件表空间包含单个InnoDB表的数据和索引,并存储在文件系统上的单个数据文件中。
参数: innodb_file_per_table

2.2.3  General Tablespaces

General Tablespaces:通用表空间,需要通过CREATE TABLESPACE语法创建通用表空间,在创建表时,可以指定该表空间。
 

2.2.4  Undo Tablespaces

Undo Tablespaces:撤销表空间,MySQL实例在初始化时会自动创建两个默认的undo表空间〈初始大小16M),用于存储undo log日志。
 

2.2.5  Temporary Tablespaces

Temporary Tablespaces: InnoDB使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。
 

2.2.6  Doublewrite Buffer Files

Doublewrite Buffer Files:双写缓冲区,innoDB引擎将数据页从Buffer Pool刷新到磁盘前,先将数据页写入双写缓冲区文件中,便于系统异常时恢复数据。

2.2.7  Redo Log

Redo Log:重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都会存到该日志中,用于在刷新脏页到磁盘时,发生错误时,进行数据恢复使用。
 

2.3  后台线程

三、事务原理

四、MVCC

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

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

相关文章

API电商如何进行数据采集汇总分析

电商数据采集的网页抓取数据、淘宝、天猫、京东等平台的电商数据抓取,网页爬虫、采集网站数据、网页数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么电…

报名倒计时 | Atlassian 社区日·上海站:与澳大利亚商务领事一起探索澳大利亚的创新力量

1月20日(下周六),我们即将在上海迎来一场别开生面的 Atlassian 社区线下活动,我们非常荣幸地邀请到了 Austrade(澳大利亚总领事馆商务处)的商务领事——Lauren Gilbert,劳伦女士此次将为大家带来…

Cesium 模型开挖

和模型压平类似,此处开挖也是采用修改了模型的顶点,通过判断定的位置来判断改顶点是否加载。 缺点:会有毛边。 后续我会再上个修改源码无毛边的版本。 // 三维模型裁剪 class TilesetCut {constructor(tileset, opt) {if (!tileset) {consol…

人工智能推动供应链革命的成功

人工智能推动供应链革命的成功 目录 人工智能推动供应链革命的成功一、供应链管理不断变化的面貌二、拥挤的解决方案景观三、踏上人工智能驱动的转型1. 价值创造识别、战略和路线图2. 目标解决方案设计和供应商选择3. 实施与系统集成4. 变革管理、能力建设和全面价值获取 新技术…

缺陷检测设备可以用于检测各种类型的缺陷,包括裂纹、气泡、疏松、异物、变形等

缺陷检测设备是用于检测产品或材料缺陷的工具。这些设备可以用于检测各种类型的缺陷,包括裂纹、气泡、疏松、异物、变形等。常见的缺陷检测设备包括X射线检测设备、超声波检测设备、磁粉检测设备、红外检测设备等。这些设备可以帮助生产厂家在生产过程中及时发现并修…

NPN PNP SS8050 SS8550 S8050

SS8050的使用及引脚判断方法 今天讲的是NPN型三极管SS8050,主要分为以下几个方面: 一、前言 二、SS8050简介 三、NPN三极管与PNP三极管 四、三极管管脚识别方法 五、不拆卸三极管判断其好坏 六、S8050和SS8050的区别 七、三极管与MOS管的区别 八…

力扣题解24. 两两交换链表中的节点(图解递归和双指针)

24. 两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入&…

解决python画图无法显示中文的问题

python画图遇到的问题: 中文不显示: 解决方法:把字体设置为支持中文的字体,比如黑体 黑体下载链接: 链接:https://pan.baidu.com/s/1BD7zQEBUfcIs6mC2CPYy6A?pwdv120 提取码:v120 pyhon…

CSS 选择器全攻略:从入门到精通(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Python的运算符与表达式

目录 运算符与表达式运算符算数运算符赋值运算符关系运算符逻辑运算符位运算符 运算符与表达式 运算符 算数运算符 赋值运算符 关系运算符 逻辑运算符 位运算符

力扣热题 100

文章目录 哈希双指针滑动窗口子串普通数组矩阵链表二叉树图论回溯二分查找栈堆贪心算法动态规划多维动态规划技巧 哈希 双指针 移动零 class Solution {public void moveZeroes(int[] nums) {int k 0;for(int i 0;i < nums.length; i){if(nums[i] ! 0) {nums[k] nums[…

揭秘关键指标稳定币供应比率(SSR):它如何影响你的投资?

作者&#xff1a;lesleyfootprint.network 数据源&#xff1a;The Stablecoin Dashboard 在加密世界里&#xff0c;稳定币扮演着重要的角色&#xff0c;为投资者提供了一个相对稳定的避风港。 稳定币旨在保持相对稳定的价值&#xff0c;这通常通过将它们与商品、法定货币挂钩…