InnoDB
是一个通用的存储引擎,平衡了高可靠性和高性能。在 MySQL 8.3 中,InnoDB
是默认的 MySQL 存储引擎。除非您已经配置了不同的默认存储引擎,否则发出不带 ENGINE
子句的 CREATE TABLE
语句将创建一个 InnoDB
表。
InnoDB 的关键优势
-
其 DML 操作遵循 ACID 模型,具有提交、回滚和崩溃恢复功能,以保护用户数据。见 第 17.2 节,“InnoDB 和 ACID 模型”。
-
行级锁定和 Oracle 风格的一致读取提高了多用户并发性和性能。见 第 17.7 节,“InnoDB 锁定和事务模型”。
-
InnoDB
表将您的数据组织在磁盘上,以优化基于主键的查询。每个InnoDB
表都有一个主键索引称为聚簇索引,该索引组织数据以最小化主键查找的 I/O。见 第 17.6.2.1 节,“聚簇和次要索引”。 -
为了维护数据完整性,
InnoDB
支持FOREIGN KEY
约束。使用外键,插入、更新和删除操作将被检查,以确保它们不会在相关表之间引起不一致。见 第 15.1.20.5 节,“FOREIGN KEY 约束”。
表 17.1 InnoDB 存储引擎功能
Feature | Support |
---|---|
B 树索引 | 是 |
备份/点时间恢复 (在服务器中实现,而不是在存储引擎中。) | 是 |
集群数据库支持 | 否 |
聚簇索引 | 是 |
压缩数据 | 是 |
数据缓存 | 是 |
加密数据 | 是 (在服务器中通过加密函数实现的;在 MySQL 5.7 及更高版本中,支持静态数据加密。) |
外键支持 | 是 |
全文搜索索引 | 是 (在 MySQL 5.6 及更高版本中,支持 FULLTEXT 索引。) |
地理空间数据类型支持 | 是 |
地理空间索引支持 | 是 (在 MySQL 5.7 及更高版本中,支持地理空间索引。) |
哈希索引 | 否 (InnoDB 内部使用哈希索引来实现自适应哈希索引功能。) |
索引缓存 | 是 |
锁定粒度 | 行 |
MVCC | 是 |
复制支持 (在服务器中实现,而不是在存储引擎中。) | 是 |
存储限制 | 64TB |
T 树索引 | 否 |
事务 | 是 |
更新数据字典的统计信息 | 是 |
要比较 InnoDB
与 MySQL 提供的其他存储引擎的功能,请参阅 存储引擎功能 表在 第 18 章,替代存储引擎。
InnoDB 增强功能和新功能
关于 InnoDB
增强功能和新功能的信息,请参阅:
-
在 第 1.3 节,“MySQL 8.3 中的新功能” 中的
InnoDB
增强功能列表。 -
在 版本说明 中。
附加的 InnoDB 信息和资源
-
关于
InnoDB
相关的术语和定义,请参阅 MySQL 词汇表。 -
关于专门的
InnoDB
存储引擎论坛,请参阅 MySQL 论坛::InnoDB。 -
InnoDB
按照与 MySQL 相同的 GNU GPL 许可证 Version 2(1991 年 6 月)发布。关于 MySQL 许可证的更多信息,请参阅 http://www.mysql.com/company/legal/licensing/。