超详细的mysql存储引擎——InnoDB的讲解

如果想看自己的数据库默认使用的那个存储引擎,可以通过使用命令:

SHOW VARIABLES LIKE 'storage_engine';

一、InnoDB存储引擎

1.InnoDB是事务型数据库的首选引擎

支持事务安全表(ACID)

事务的ACID属性:即原子性、一致性、隔离性、持久性

a.原子性:原子性也就是说这组语句要么全部执行,要么全部不执行,如果事务执行到一半出现错误,数据库就要回滚到事务开始执行的地方。

实现:主要是基于MySQ日志系统的redo和undo机制。事务是一组SQL语句,里面有选择,查询、删除等功能。每条语句执行会有一个节点。例如,删除语句执行后,在事务中有个记录保存下来,这个记录中储存了我们什么时候做了什么事。如果出错了,就会回滚到原来的位置,redo里面已经存储了我做过什么事了,然后逆向执行一遍就可以了。

b.一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。(eg:比如A向B转账,不可能A扣了钱,B却没有收到)

c.隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰;

如果不考虑隔离性则会出现几个问题:

 i、脏读:是指在一个事务处理过程里读取了另一个未提交的事务中的数据(当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致);(读取了另一个事务未提交的脏数据)

 ii、不可重复读:在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了;(读取了前一个事务提交的数据,查询的都是同一个数据项)

iii、虚读(幻读):是事务非独立执行时发生的一种现象(eg:事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样);(读取了前一个事务提交的数据,针对一批数据整体)

d.持久性:事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚

2.InnoDB是mySQL默认的存储引擎

默认的隔离级别是RR,并且在RR的隔离级别下更近一步,通过多版本并发控制(MVCC)解决不可重复读问题,加上间隙锁(也就是并发控制)解决幻读问题。因此InnoDB的RR隔离级别其实实现了串行化级别的效果,而保留了比较好的并发性能。

MySQL数据库为我们提供的四种隔离级别:

a、Serializable(串行化):可避免脏读、不可重复读、幻读的发生;

b、Repeatable read(可重复读):可避免脏读、不可重复读的发生;

c、Read committed(读已提交):可避免脏读的发生;

d、Read uncommitted(读未提交):最低级别,任何情况都无法保证;

从a—-d隔离级别由高到低,级别越高,执行效率越低

3.InnoDB支持行级锁

行级锁可以最大程度的支持并发,行级锁是由存储引擎层实现的。

锁:锁的主要作用是管理共享资源的并发访问,用于实现事务的隔离性

类型:共享锁(读锁)、独占锁(写锁)         

MySQL锁的力度:表级锁(开销小、并发性低),通常在服务器层实现

行级锁(开销大、并发性高),只会在存储引擎层面进行实现

4、InnoDB是为处理巨大数据量的最大性能设计

它的CPU效率可能是任何基于磁盘的关系型数据库引擎所不能匹敌的

5、InnoDB存储引擎完全与MySQL服务器整合

InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件);

6InnoDB支持外键完整性约束

存储表中的数据时,每张表的存储都按照主键顺序存放,如果没有显示在表定义时指定主键。InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键

7、InnoDB被用在众多需要高性能的大型数据库站点上

8、InnoDB中不保存表的行数(eg:select count(*)from table时,InnoDB需要扫描一遍整个表来计算有多少行);清空整个表时,InnoDB是一行一行的删除,效率非常慢;

InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件

Shakker Shakker

多功能AI图像生成和编辑平台

Shakker 103 查看详情 Shakker

二、InnoDB引擎的底层实现

InnoDB的存储文件有两个,后缀名分别是 .frm和 .idb;其中 .frm是表的定义文件, .idb是表的数据文件。

1、InnoDB引擎采用B+Tree结构来作为索引结构

B-Tree(平衡多路查找树):为磁盘等外存储设备设计的一种平衡查找树

系统从磁盘读取数据到内存时是以磁盘块位基本单位的,位于同一磁盘块中的数据会被一次性读取出来,而不是按需读取。

InnoDB存储引擎使用页作为数据读取单位,页是其磁盘管理的最小单位,默认page大小是16k.

系统的一个磁盘块的存储空间往往没有那么大,因此InnoDB每次申请磁盘空间时都会是若干地址连续磁盘块来达到页的大小16KB。

InnoDB在把磁盘数据读入到磁盘时会以页为基本单位,在查询数据时,如果一个页中的每条数据都能助于定位数据记录的位置,这将会减少磁盘I/O的次数,提高查询效率。

B-Tree结构的数据可以让系统高效的找到数据所在的磁盘块

B-Tree中的每个节点根据实际情况可以包含大量的关键字信息和分支,例

InnoDB.png

每个节点占用一个盘块的磁盘空间,一个节点上有两个升序排序的关键字和三个指向子树根节点的指针,指针存储的是子节点所在磁盘块的地址。

以根节点为例,关键字为17和35,P1指针指向的子树的数据范围小于17,P2指针指向的子树的数据范围为17—-35,P3指针指向的子树的数据范围大于35;

模拟查找关键字29的过程:

a.根据根节点找到磁盘块1,读入内存。【磁盘I/O操作第一次】

b.比较关键字29在区间(17,35),找到磁盘块1的指针P2;

c.根据P2指针找到磁盘块3,读入内存。【磁盘I/O操作第二次】

d.比较关键字29在区间(26,30),找到磁盘块3的指针P2;

e.根据P2指针找到磁盘块8,读入内存。【磁盘I/O操作第三次】

f.在磁盘块8中的关键字列表中找到关键字29.

MySQL的InnoDB存储引擎在设计时是将根节点常驻内存的,因此力求达到树的深度不超过3,也就是I/O不需要超过三次;

分析上面的结果,发现需要三次磁盘I/O操作,和三次内存查找操作。由于内存中的关键字是一个有序表结构,可以利用二分法查找提高效率;而三次磁盘I/O操作时影响整个B-Tree查找效率的决定因素。

B+Tree

B+Tree是在B-Tree基础上的一种优化,使其更适合实现外存储索引结构,B-Tree中每个节点中有key,也有data,而每一页的存储空间是有限的,如果data数据较大时将会导致每个节点(即一个页)能存储的key的数量很小。当存储的数据量很大时同样会导致B-Tree的深度较大,增大查询时的磁盘I/O次数,进而影响查询效率。

在B+Tree中所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度;

InnoDB01.png

通常在B+Tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。

因此可以对B+Tree进行两种查找运算,一种是对于主键的范围查找和分页查找,另一种是从根节点开始,进行随机查找。

InnoDB中的B+Tree

InnoDB是以ID为索引的数据存储

采用InnoDB引擎的数据存储文件有两个,一个定义文件,一个是数据文件。

InnoDB通过B+Tree结构对ID建索引,然后在叶子节点中存储记录

InnoDB02.png若建立索引的字段不是主键ID,则对该字段建索引,然后在叶子节点中存储的是该记录的主键,然后通过主键索引找到对应记录。

相了解更多相关问题请访问PHP中文网:PHP视频教程

以上就是超详细的mysql存储引擎——InnoDB的讲解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1078444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 17:23:57
下一篇 2025年12月2日 17:24:52

相关推荐

  • 深度挖掘”被低估的3大本土概念币” 翻倍在即

    在数字资产的广阔海洋中,发掘那些价值尚未被市场充分认识的“璞玉”是许多参与者的目标。本文将深入探讨三个源于本土智慧、具备深厚技术底蕴且当前市值可能被低估的概念项目。我们将详细阐述这些项目的核心技术、生态应用以及它们为何具备显著的增长潜力,旨在为读者提供一个清晰的分析框架。 2025主流加密货币交易所…

    2025年12月8日
    000
  • 香港概念币价差惊人! “免税+合规”双概念加持 这些币种成外资新宠

    近期,市场上所谓的“香港概念币”表现出惊人的价差,并迅速成为国际资本追逐的新焦点。这一现象的背后,是香港地区在数字资产领域推出的“免税”与“合规”两大核心政策所形成的强大吸引力。本文将深入剖析这一趋势的成因,详细阐述合规性如何为资本提供安全港,免税政策如何成为财富效应的放大器,并结合市场上的综合评论…

    2025年12月8日 好文分享
    000
  • 抓住元宇宙风口!这5条公链或将诞生下个以太坊

    随着元宇宙概念的持续升温,其背后依赖的底层技术——公链,正迎来前所未有的发展机遇。本文将深入探讨五条在性能、生态和创新方面表现突出的公链,它们凭借各自的独特优势,正在为构建宏大的元宇宙世界奠定基础,并被市场认为有潜力成为下一个以太坊级别的基础设施。 2025主流加密货币交易所官网注册地址推荐: 欧易…

    2025年12月8日
    000
  • 盘点最具潜力的公链代币TOP10

    公链作为去中心化世界的基础设施,其原生代币的价值与潜力一直是市场关注的焦点。本文将深入探讨当前市场中被认为最具潜力的十种公链代币,我们将从技术创新、生态系统发展、社区共识以及市场综合反馈等多个维度进行分析。文章将逐一介绍每个公链的核心特点以及其代币的价值支撑,通过对这些项目解决特定问题(如扩展性、互…

    2025年12月8日
    100
  • 稳定币官网入口 稳定币官网地址链接

    稳定币官网信息可通过直接访问获取。1.USDT官网提供储备报告;2.USDC官网发布审计证明;3.DAI官网展示去中心化机制;4.TUSD官网支持链上验证;5.BUSD官网说明赎回政策。此外,普通用户可通过币安、欧易、火币等交易所便捷交易稳定币。访问时需核对域名、使用书签并警惕弹窗以确保安全。 稳定…

    2025年12月8日
    000
  • USDT和USDC哪个更安全?2025年稳定币市值排名

    USDT在流动性方面占优,USDC在安全与合规上更强。1.USDT储备含商业票据透明度较低,而USDC储备为现金及美债且经审计更透明;2.USDC受美国严格监管合规性更高;3.USDT因先发优势市场接受度和流动性更广。预测2025年稳定币市值排名依次为:1.USDT因网络效应稳固第一;2.USDC借…

    2025年12月8日
    000
  • 公链是什么意思?十大公链优缺点对比表

    本文将解释公链的核心概念及其工作原理;接着,会探讨在评估不同公链时需要考虑的关键因素,并概述一些流行公链之间在这些方面的普遍差异,帮助读者理解它们各自的特点和权衡,尽管无法在此直接呈现详细的“十大”对比表格,但会介绍对比时需要关注的重点。 2025主流加密货币交易所官网注册地址推荐: 欧易OKX: …

    2025年12月8日
    000
  • 稳定币存在哪些风险?

    稳定币虽被视为加密世界的“避风港”,但其存在五大核心风险:1. 脱钩风险,因市场恐慌或机制缺陷导致价格暴跌;2. 储备资产风险,抵押物不透明或贬值引发信任危机;3. 监管风险,政策变动可能导致交易受限或资产冻结;4. 对手方与运营风险,发行方或交易平台出现问题威胁资产安全;5. 智能合约与技术风险,…

    2025年12月8日
    000
  • 稳定币的发行机制是怎样的?

    稳定币看行情交易平台: 欧易OKX: Binance币安: 火币Huobi: Gateio芝麻开门: 稳定币主要通过锚定特定资产或依靠算法来维持价值稳定,常见的发行机制有法币抵押、加密资产抵押和算法控制三种。具体如下: 法币抵押型:以美元等法币为储备,发行方每发行 1 枚稳定币,需在银行或其他金融机…

    好文分享 2025年12月8日
    000
  • 稳定币与传统加密货币的区别及投资优势

    稳定币与传统加密货币的核心差异体现在价格稳定性、发行机制和应用场景。1. 价格方面,稳定币锚定法币或资产,波动极小,而传统加密货币价格波动剧烈;2. 发行机制上,稳定币依赖储备或算法调节,传统加密货币则基于去中心化机制发行;3. 应用场景中,稳定币主要用于交易中转、支付和DeFi抵押,传统加密货币则…

    2025年12月8日
    000
  • Altcoins Under the Microscope: Analyst’s Take on the Best Projects 聚光灯下的山寨币:分析师对最佳项目的看法

    加密分析师聚焦具备实际应用价值的山寨币。本文将剖析当前备受瞩目的几个优质山寨币项目,包括qubetics、avalanche和dogecoin等。 山寨币观察室:分析师眼中的潜力项目 山寨币市场如同未开发的边疆般复杂多变,但一些项目正逐步崭露头角。我们来看看加密领域专家对目前最具潜力的山寨币的看法。…

    2025年12月8日
    000
  • 加密货币、区块有向无环图(BlockDAG)与盈利引擎:2025年最热趋势是什么?

    探索 2025 年加密货币、blockdag 技术与盈利引擎的发展趋势。掌握影响区块链未来的重要动向及核心参与者。 2025 年的加密世界正经历一场技术革新,特别是将区块链与人工智能融合的项目正在崛起。让我们一起深入了解这些关键趋势和重要项目,聚焦 BlockDAG 等前沿科技如何推动数字资产迈向新…

    2025年12月8日
    000
  • 加密货币、CoinGecko 与七月份的价格爆发:什么最热门?

    深入了解7月加密市场的飙升:聚焦coingecko上表现突出的bonk、plume和moodeng。探索这一快速演变领域的趋势、洞察与潜在走势。 加密货币、CoinGecko与7月价格爆发:哪些项目正在走热? 7月的加密市场异常火热,CoinGecko成为追踪行情变化的重要风向标。我们一起来看看其中…

    2025年12月8日
    000
  • 稳定币usdt 稳定币概念 稳定币龙头是哪些

    稳定币是加密货币市场中用于规避波动的工具,其价值通常与美元等资产挂钩。主流类型包括法币抵押型(如USDT、USDC)、加密货币抵押型(如DAI)和算法稳定币。2025年推荐的交易平台有欧易OKX、币安Binance和火币HTX等。 稳定币作为加密世界与现实法定货币之间的桥梁,为用户提供了一种规避市场…

    2025年12月8日
    000
  • 稳定币是什么?为什么抖音热搜都在讨论?

    稳定币是一种与美元等资产挂钩、旨在保持价值稳定的加密货币,主要分为法币抵押、加密货币抵押和算法三种类型。1.法币抵押型如USDT、USCD由美元储备支持;2.加密货币抵押型如DAI需超额抵押其他币种;3.算法型依赖智能合约调节供应量但风险较高。其在抖音等平台热议的原因包括:作为加密市场下跌时的避险工…

    2025年12月8日
    000
  • 稳定币龙头股排名前十名

    稳定币作为加密世界的基石,为市场提供了重要的价值锚定和避险工具。本文将为您盘点当前市值和影响力排名前十的稳定币项目,帮助您了解它们各自的特点、优势以及主要的交易平台。 2025年稳定币交易所: 欧易okx:   币安binance:   火币htx: 稳定币项目综合实力排名 1. Tether (U…

    2025年12月8日
    000
  • 一文读懂稳定币:定义、原理与核心作用

    稳定币是一种通过锚定特定资产来维持币值稳定的加密货币,其核心特征是价格波动极小,例如USDT、USDC等与美元保持1:1锚定。其维持稳定的原理主要有三种:1. 资产抵押,发行方储备等量法定货币,如发行1亿USDC需储备1亿美元现金;2. 加密资产抵押,如DAI通过抵押ETH并由智能合约调节抵押率;3…

    2025年12月8日
    000
  • 稳定币是什么 币圈三大稳定币

    在价格波动剧烈的加密货币世界里,稳定币提供了一种价值稳定的数字资产,充当着连接传统金融与加密生态的关键桥梁。本文将详细解释稳定币的概念,并介绍目前市场上最具影响力的三大稳定币。 2025年稳定币交易所: 欧易okx:   币安binance:   火币htx: 稳定币是什么? 稳定币(Stablec…

    2025年12月8日
    000
  • 稳定币有哪几种 数字货币稳定币有哪些

    %ignore_a_1%是加密世界的重要基石,它通过锚定美元等法定货币来维持价格稳定,为波动的加密市场提供了避风港和交易媒介。本文将详细介绍当前市场上主流的数字货币稳定币,帮助你了解它们的特点和区别。 2025年稳定币交易所: 欧易okx官网: 币安binance官网: 火币htx官网:  稳定币的…

    2025年12月8日
    000
  • NALA币属于什么链上的_NALA币是什么链上的币

    【权威推荐】2025主流数字货币交易平台合集 Binance币安 官网直达: 安卓安装包下载: 欧易OKX ️ 官网直达: 安卓安装包下载: Huobi火币️ 官网直达: 安卓安装包下载: NALA币属于什么链上的?NALA币是什么链上的币 NALA币是一种基于区块链技术发行的数字资产,明确归属于特…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信