MySQL的InnoDB引擎原来是这样的

大家都知道,对于面试官来说,没有办法能够很直接的能问到面试者对于SQL的理解,所以就会有很多千奇百怪的问题就出现了,比如 SQL 优化,索引创建原则,索引的最左匹配原则,唯一索引,联合索引,甚至就开始询问关于 MySQL 的存储引擎了。

MYSQL 的存储引擎

首先我们得先知道存储引擎是什么,

百度百科是这么解释的:

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

阿粉不知道最近很火的 ChatGTP 是如何解释这个存储引擎的,但是在阿粉看来,他就是 MySQL将数据存储在文件系统中的存储方式或者存储格式

又或者说,存储引擎就是存储数据,建立索引,更新查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。

也就是说,在一个数据库中的多个表可以有不同的存储引擎,这样面试官再问的时候,可别说不可以。

既然我们知道了 MYSQL 的存储引擎是什么了,那么就得来说说他的分类了。

MYSQL 存储引擎分类:

  • InnoDB、
  • MyISAM、
  • MEMORY、
  • CSV、
  • BLACKHOLE、
  • FEDERATED、
  • MRG_MYISAM、
  • ARCHIVE、
  • PERFORMANCE_SCHEMA。

这么一看的话,MYSQL 的存储引擎那分类也是很多样的,这样阿粉接下来就详细的拆开,一个一个的说说他的存储引擎,只讲用的比较多的,其他的只做简单了解就OK了,比较,如果要是你能和面试官就一两个存储引擎聊的非常透彻的话,那么相信你也入职也没啥问题。

InnoDB 存储引擎

首先第一点,mysql5.6 以上默认存储方式就是使用的 InnoDB存储引擎,而 InnoDB 存储引擎的各方面的优点也是非常多的,例如:

用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性, 数据操作除了插入和查询之外,还包括很多更新和删除操作,那么 InnoDB 存储引擎是比较合适的。

InnoDB 除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚, 对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。

InnoDB 的行级别锁定以及 Oracle 风格的一致性无锁读提升了它的多用户并发数以及性能。InnoDB 将用户数据存储在聚集索引中以减少基于主键的普通查询所带来的 I/O 开销。为了保证数据的完整性,InnoDB 还支持外键约束。

我们也是可以通过 SQL 来查询当前数据库默认的存储引擎的,SQL 语句如下:

show variables like'%engine%';

上述语句是查询默认使用的存储引擎,而查询当前 MYSQL 支持的存储引擎则是使用下面的语句:

show engines;

既然我们已经都知道了关于这个 InnoDB 的相关特点了,那么接下来我们还得来看看这个关于 InnoDB 存储引擎的磁盘结构。

InnoDB磁盘主要包含Tablespaces,InnoDB Data Dictionary,Doublewrite Buffer、Redo Log 和Undo Logs。

Tablespaces:system表空间是InnoDB数据字典、doublewrite缓冲区、change缓冲区和undo日志的存储区域。如果表是在系统表空间中创建的,而不是在每个表的文件或一般表空间中创建的话,它还可以包含表和索引数据。

InnoDB Data Dictionary:InnoDB数据字典由内部系统表组成,其中包含用于跟踪表、索引和表列等对象的元数据。元数据物理上位于InnoDB系统表空间中。由于历史原因,数据字典元数据与InnoDB表元数据文件(.frm文件)中的信息存在一定程度的重叠。

Doublewrite Buffer:doublewrite缓冲区是一个存储区域,InnoDB在将页面写到InnoDB数据文件中的适当位置之前,在这个存储区域中写入从缓冲池中刷新的页面。如果在页写过程中出现了操作系统、存储子系统或意外的mysqld进程退出,InnoDB可以在崩溃恢复期间从doublewrite缓冲区中找到一个好的页副本。

Redo Log:重做日志是一种基于磁盘的数据结构,在崩溃恢复期间用于纠正不完整事务写入的数据。在正常操作过程中,重做日志对SQL语句或低级API调用产生的表数据更改请求进行编码。在意外关闭之前未完成数据文件更新的修改将在初始化期间和接受连接之前自动重播。有关重做日志在崩溃恢复中的角色的信息。

Undo Logs:撤消日志是与单个读写事务相关联的撤消日志记录的集合。撤销日志记录包含关于如何撤销事务对聚集索引记录的最新更改的信息。如果另一个事务需要将原始数据作为一致读操作的一部分来查看,则从撤消日志记录中检索未修改的数据。Undo日志存在于Undo日志段中,包含在回滚段中。回滚段位于系统表空间、undo表空间和临时表空间中。

下面是阿粉找的硬盘结构图:

关于 InnoDB 引擎,其实我们最主要掌握的就是他的一系列的特点,下面则是他的优点:

它的DML操作遵循ACID(atomicity原子,consistency一致,isolation隔离,durability持久)模型,事务具有提交、回滚和崩溃恢复功能,以保护用户数据。

并发性能好:行级锁定和oracle风格的一致读取可以提高多用户并发性和性能。

查询性能好:InnoDB表在磁盘上排列数据,以优化基于主键的查询。每个InnoDB表都有一个主键索引,称为聚集索引,用于组织数据以最小化主键查找的I/O。

业务性能好:为了保持数据的完整性,InnoDB支持外键约束。使用外键,插入、更新和删除将被检查,以确保它们不会导致相关表之间的不一致。有些生产环境不使用外键,以业务代码维护表数据间关系。

一般对于 InnoDB 掌握这些差不多也算是能应对面试官的提问了,今天阿粉就先讲到这里,之后继续讲解关于 MySQL 的其他的存储引擎。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/298729.html<

(0)
运维的头像运维
上一篇2025-05-23 01:59
下一篇 2025-05-23 02:00

相关推荐

  • TripodCloudVPS测评,CN2 GIA实测表现,CN2 GIA VPS哪家强?

    TripodCloudVPS 在 2026 年 CN2 GIA 线路实测中,其回国延迟稳定在 30-45ms 区间,丢包率低于 0.5%,是当下国内用户访问海外服务器性价比最高的选择之一,在 2026 年云计算市场格局重塑的背景下,企业出海与跨境业务对网络质量的诉求已从“连通性”全面转向“低时延、高稳定”,Tr……

    2026-05-02
    0
  • CycloneServers 是什么?CycloneServers 可靠吗

    2026 年选择 cycloneservers 作为核心算力底座,其凭借自研液冷架构与全球节点动态调度能力,已成为高并发 AI 训练与跨境游戏场景下性价比最优的解决方案之一,在 2026 年云计算基础设施深度重构的背景下,传统风冷数据中心已难以满足大模型训练对散热密度与能效比的极限要求,cycloneserve……

    2026-05-02
    0
  • CycloneServersVPS测评,实测体验,CycloneServersVPS怎么样,CycloneServersVPS测评

    CycloneServersVPS 在 2026 年实测中表现稳健,其核心优势在于基于 NVMe SSD 的低延迟架构与针对亚洲线路的优化,尤其适合需要稳定海外访问速度的跨境电商及游戏场景,但需注意其价格略高于入门级共享主机,核心性能实测与架构解析在 2026 年云计算基础设施全面向边缘计算与 AI 加速转型的……

    2026-05-02
    0
  • VPS全新测评,实测数据与性能表现,VPS性能如何选,VPS性能测试

    2026 年 VPS 全新测评显示,简米科技推出的高防节点在 40Gbps 带宽下延迟稳定在 15ms 以内,综合性价比超越传统大厂,是中小企业跨境业务的首选方案,为什么选择 2026 年新一代 VPS 架构?随着云计算技术迭代,2026 年的 VPS 市场已从单纯的价格竞争转向“性能 + 安全 + 稳定性”的……

    2026-05-02
    0
  • virmach是什么?virmach主机评测及购买指南

    2026 年 Virmach 依然是高性价比 VPS 的首选,其核心优势在于提供基于 NVMe 的入门级方案与稳定的 KVM 架构,特别适合预算敏感型开发者及中小型企业,但需警惕其部分节点在跨境访问时的网络延迟波动,在 2026 年的云计算市场中,VPS 服务已从单纯的资源售卖转向“算力 + 网络 + 稳定性……

    2026-05-02
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注