
导读:InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于Oracle数据库的架构。通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎。同时,也正是因为InnoDB的存在,才使MySQL数据库变得更有魅力。
本文将简要介绍InnoDB存储引擎的体系架构及其不同于其他存储引擎的特性。
作者:姜承尧
来源:大数据DT(ID:hzdashuju)
内容摘编自《MySQL技术内幕:InnoDB存储引擎(第2版)》
01 InnoDB存储引擎概述
InnoDB存储引擎最早由Innobase Oy公司开发,被包括在MySQL数据库所有的二进制发行版本中,从MySQL 5.5版本开始是默认的表存储引擎(之前的版本InnoDB存储引擎仅在Windows下为默认的存储引擎)。
该存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发),其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,同时被设计用来最有效地利用以及使用内存和CPU。
Heikki Tuuri是InnoDB存储引擎的创始人,和著名的Linux创始人Linus是芬兰赫尔辛基大学校友。在1990年获得赫尔辛基大学的数学逻辑博士学位后,他于1995年成立Innobase Oy公司并担任CEO。
同时,在InnoDB存储引擎的开发团队中,有来自中国科技大学的Calvin Sun。随后又有一个中国人Jimmy Yang也加入了InnoDB存储引擎的核心开发团队,负责全文索引的开发,其之前任职于Sybase数据库公司,负责数据库的相关开发工作。
InnoDB存储引擎已经被许多大型网站使用,如用户熟知的Google、Yahoo!、Facebook、YouTube、Flickr,在网络游戏领域有《魔兽世界》《Second Life》《神兵玄奇》等。我不是MySQL数据库的布道者,也不是InnoDB的鼓吹者,但是我认为当前实施一个新的OLTP项目不使用MySQL InnoDB存储引擎将是多么的愚蠢。
从MySQL数据库的官方手册可得知,著名的Internet新闻站点Slashdot.org运行在InnoDB上。Mytrix、Inc.在InnoDB上存储超过1TB的数据,还有一些其他站点在InnoDB上处理插入/更新操作的速度平均为800次/秒。这些都证明了InnoDB是一个高性能、高可用、高可扩展的存储引擎。
InnoDB存储引擎同MySQL数据库一样,在GNU GPL 2下发行。更多有关MySQL证书的信息,这里不再详细介绍,可参考:
http://www.mysql.com/about/legal/
02 InnoDB存储引擎的版本
InnoDB存储引擎被包含于所有MySQL数据库的二进制发行版本中。早期其版本随着MySQL数据库的更新而更新。从MySQL 5.1版本时,MySQL数据库允许存储引擎开发商以动态方式加载引擎,这样存储引擎的更新可以不受MySQL数据库版本的限制。
所以在MySQL 5.1中,可以支持两个版本的InnoDB,一个是静态编译的InnoDB版本,可将其视为老版本的InnoDB;另一个是动态加载的InnoDB版本,官方称为InnoDB Plugin,可将其视为InnoDB 1.0.x版本。
MySQL 5.5版本中又将InnoDB的版本升级到了1.1.x。而在MySQL 5.6版本中InnoDB的版本也随着升级为1.2.x版本。
以下是InnoDB各版本功能对比。
在现实工作中我发现很多MySQL数据库还是停留在MySQL 5.1版本,并使用InnoDB Plugin。很多DBA错误地认为InnoDB Plugin和InnoDB 1.1版本之间是没有区别的。但从功能对比中还是可以发现,虽然都增加了对于compress和dynamic页的支持,但是InnoDB Plugin是不支持Linux Native AIO功能的。
此外,由于不支持多回滚段,InnoDB Plugin支持的最大支持并发事务数量也被限制在1023。而且随着MySQL 5.5版本的发布,InnoDB Plugin也变成了一个历史产品。
03 InnoDB体系架构
图2-1简单显示了InnoDB的存储引擎的体系架构,从图可见,InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:
……
▲图2-1 InnoDB存储引擎体系架构
后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。
InnoDB存储引擎是多线程的模型,因此其后台有多个不同的后台线程,负责处理不同的任务。
InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可将其视为基于磁盘的数据库系统(Disk-base Database)。在数据库系统中,由于CPU速度与磁盘速度之间的鸿沟,基于磁盘的数据库系统通常使用缓冲池技术来提高数据库的整体性能。
缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。
在数据库中进行读取页的操作,首先将从磁盘读到的页存放在缓冲池中,这个过程称为将页“FIX”在缓冲池中。下一次再读相同的页时,首先判断该页是否在缓冲池中。若在缓冲池中,称该页在缓冲池中被命中,直接读取该页。否则,读取磁盘上的页。
▲图2-2 InnoDB内存数据对象
通常来说,数据库中的缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理的。即最频繁使用的页在LRU列表的前端,而最少使用的页在LRU列表的尾端。当缓冲池不能存放新读取到的页时,将首先释放LRU列表中尾端的页。
04 InnoDB关键特性
InnoDB存储引擎的关键特性包括:
上述这些特性为InnoDB存储引擎带来更好的性能以及更高的可靠性。
关于作者:姜承尧(David Jiang),资深MySQL数据库专家,擅长于数据库的故障诊断、性能调优、容灾处理、高可用和高扩展研究,同时一直致力于MySQL数据库底层实现原理的研究和探索。此外,对高性能数据库和数据仓库也有深刻而独到的理解。曾为MySQL编写了许多开源工具和性能扩展补丁,如广受好评的InnoDB引擎二级缓存项目。
本文摘编自《MySQL技术内幕:InnoDB存储引擎(第2版)》,经出版方授权发布。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
数据清洗工具全景指南:从入门到进阶的实操路径 在数据驱动决策的链条中,“数据清洗” 是决定后续分析与建模有效性的 “第一道 ...
2025-08-29机器学习中的参数优化:以预测结果为核心的闭环调优路径 在机器学习模型落地中,“参数” 是连接 “数据” 与 “预测结果” 的关 ...
2025-08-29CDA 数据分析与量化策略分析流程:协同落地数据驱动价值 在数据驱动决策的实践中,“流程” 是确保价值落地的核心骨架 ——CDA ...
2025-08-29CDA含金量分析 在数字经济与人工智能深度融合的时代,数据驱动决策已成为企业核心竞争力的关键要素。CDA(Certified Data Analys ...
2025-08-28CDA认证:数据时代的职业通行证 当海通证券的交易大厅里闪烁的屏幕实时跳动着市场数据,当苏州银行的数字金融部连夜部署新的风控 ...
2025-08-28PCU:游戏运营的 “实时晴雨表”—— 从数据监控到运营决策的落地指南 在游戏行业,DAU(日活跃用户)、MAU(月活跃用户)是衡量 ...
2025-08-28Excel 聚类分析:零代码实现数据分群,赋能中小团队业务决策 在数字化转型中,“数据分群” 是企业理解用户、优化运营的核心手段 ...
2025-08-28CDA 数据分析师:数字化时代数据思维的践行者与价值推动者 当数字经济成为全球经济增长的核心引擎,数据已从 “辅助性信息” 跃 ...
2025-08-28ALTER TABLE ADD 多个 INDEX:数据库批量索引优化的高效实践 在数据库运维与性能优化中,索引是提升查询效率的核心手段。当业务 ...
2025-08-27Power BI 去重函数:数据清洗与精准分析的核心工具 在企业数据分析流程中,数据质量直接决定分析结果的可靠性。Power BI 作为主 ...
2025-08-27CDA 数据分析师:数据探索与统计分析的实践与价值 在数字化浪潮席卷各行业的当下,数据已成为企业核心资产,而 CDA(Certif ...
2025-08-27t 检验与 Wilcoxon 检验:数据差异比较的两大统计利器 在数据分析中,“比较差异” 是核心需求之一 —— 如新药疗效是否优于旧药 ...
2025-08-26季节性分解外推法:解锁时间序列预测的规律密码 在商业决策、资源调度、政策制定等领域,准确的预测是规避风险、提升效率的关键 ...
2025-08-26CDA 数据分析师:数据治理驱动下的企业数据价值守护者 在数字经济时代,数据已成为企业核心战略资产,其价值的释放离不开高 ...
2025-08-26基于 SPSS 的 ROC 曲线平滑调整方法与实践指南 摘要 受试者工作特征曲线(ROC 曲线)是评估诊断模型或预测指标效能的核心工具, ...
2025-08-25神经网络隐藏层神经元个数的确定方法与实践 摘要 在神经网络模型设计中,隐藏层神经元个数的确定是影响模型性能、训练效率与泛 ...
2025-08-25CDA 数据分析师与数据思维:驱动企业管理升级的核心力量 在数字化浪潮席卷全球的当下,数据已成为企业继人力、物力、财力之后的 ...
2025-08-25CDA数据分析师与数据指标:基础概念与协同逻辑 一、CDA 数据分析师:数据驱动时代的核心角色 1.1 定义与行业价值 CDA(Certified ...
2025-08-22Power Query 移动加权平均计算 Power Query 移动加权平均设置全解析:从原理到实战 一、移动加权平均法的核心逻辑 移动加权平均 ...
2025-08-22描述性统计:CDA数据分析师的基础核心与实践应用 一、描述性统计的定位:CDA 认证的 “入门基石” 在 CDA(Certified Data Analy ...
2025-08-22