17.1 InnoDB简介
- 17.1.1 使用InnoDB表的优势
- 17.1.2 InnoDB表的最佳实践
- 17.1.3 验证InnoDB是否为默认存储引擎
- 17.1.4 使用InnoDB进行测试和基准测试
InnoDB是一款通用的存储引擎,兼顾高可靠性和高性能。在MySQL 8.0中,InnoDB是MySQL的默认存储引擎。除非配置了其他默认存储引擎,否则在执行CREATE TABLE语句时,若未指定ENGINE子句,会创建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存储引擎功能
| 功能 | 支持情况 |
|---|---|
| B树索引 | 是 |
| 备份/时间点恢复(在服务器中实现,而非存储引擎中) | 是 |
| 集群数据库支持 | 否 |
| 聚簇索引 | 是 |
| 压缩数据 | 是 |
| 数据缓存 | 是 |
| 加密数据 | 是(通过服务器中的加密函数实现;在MySQL 5.7及更高版本中,支持静态数据加密) |
| 外键支持 | 是 |
| 全文搜索索引 | 是(MySQL 5.6及更高版本支持FULLTEXT索引) |
| 地理空间数据类型支持 | 是 |
| 地理空间索引支持 | 是(MySQL 5.7及更高版本支持地理空间索引) |
| 哈希索引 | 否(InnoDB内部利用哈希索引实现自适应哈希索引功能) |
| 索引缓存 | 是 |
| 锁定粒度 | 行级 |
| 多版本并发控制(MVCC) | 是 |
| 复制支持(在服务器中实现,而非存储引擎中) | 是 |
| 存储限制 | 64TB |
| T树索引 | 否 |
| 事务 | 是 |
| 更新数据字典统计信息 | 是 |
如需比较InnoDB与MySQL提供的其他存储引擎的功能,请参阅第18章 “替代存储引擎” 中的存储引擎功能表。
InnoDB的增强和新特性
有关InnoDB的增强和新特性信息,请参考:
- 1.3节 “MySQL 8.0的新特性” 中的InnoDB增强列表。
- 《版本说明》。
更多InnoDB信息和资源
- 有关InnoDB相关术语和定义,请参阅《MySQL术语表》。
- 有关InnoDB存储引擎的专门论坛,请访问MySQL Forums::InnoDB 。
- InnoDB与MySQL一样,遵循1991年6月发布的GNU通用公共许可证第二版(GNU GPL License Version 2)。有关MySQL许可的更多信息,请访问http://www.mysql.com/company/legal/licensing/ 。