## 15.1 InnoDB 简介

[15.1.1 使用 InnoDB 表的好处](innodb-benefits.html)
[15.1.2 InnoDB 表的最佳实践](innodb-best-practices.html)
[15.1.3 验证 InnoDB 是默认存储引擎](innodb-check-availability.html)
[15.1.4 使用 InnoDB 进行测试和基准测试](innodb-benchmarking.html)

[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)[](<>)

`InnoDB`是一种兼顾高可靠性和高性能的通用存储引擎。在 MySQL 8.0 中，`InnoDB`是默认的 MySQL 存储引擎。除非您配置了不同的默认存​​储引擎，否则发出[`创建表`](create-table.html)没有声明的`引擎`子句创建一个`InnoDB`桌子。

### InnoDB 的主要优势

-   其 DML 操作遵循 ACID 模型，具有提交、回滚和崩溃恢复功能的事务以保护用户数据。看[第 15.2 节，“InnoDB 和 ACID 模型”](mysql-acid.html).

-   行级锁定和 Oracle 风格的一致性读取提高了多用户并发性和性能。看[第 15.7 节，“InnoDB 锁定和事务模型”](innodb-locking-transaction-model.html).

-   `InnoDB`表在磁盘上排列数据以优化基于主键的查询。每个`InnoDB`table 有一个称为聚集索引的主键索引，它组织数据以最小化主键查找的 I/O。看[第 15.6.2.1 节，“聚集索引和二级索引”](innodb-index-types.html).

-   为了保持数据完整性，`InnoDB`支持`外键`限制。使用外键时，会检查插入、更新和删除，以确保它们不会导致相关表之间的不一致。看见[第13.1.20.5节，“外键约束”](create-table-foreign-keys.html).

[](<>)

**表15.1 InnoDB存储引擎功能**

| 特色 | 支持 |
| --- | --- |
| **树索引** | 对 |
| **备份/时间点恢复**（在服务器中实现，而不是在存储引擎中实现。） | 对 |
| **群集数据库支持** | 不 |
| **聚集索引** | 对 |
| **压缩数据** | 对 |
| **数据缓存** | 对 |
| **数据加密传输** | 是（通过加密功能在服务器上实现；在MySQL 5.7及更高版本中，支持静态数据加密。） |
| **外键支持** | 对 |
| **全文搜索索引** | 是（MySQL 5.6及更高版本中提供了对全文索引的支持。） |
| **地理空间数据类型支持** | 对 |
| **地理空间索引支持** | 是（MySQL 5.7及更高版本中提供了对地理空间索引的支持。） |
| **散列索引** | 否（InnoDB内部利用哈希索引实现自适应哈希索引功能。） |
| **索引缓存** | 对 |
| **锁定粒度** | 一行 |
| **MVCC** | 对 |
| **复制支持**（在服务器中实现，而不是在存储引擎中实现。） | 对 |
| **存储限制** | 64TB |
| **T树索引** | 不 |
| **交易** | 对 |
| **更新数据字典的统计信息** | 对 |

比较`InnoDB`对于MySQL提供的其他存储引擎，请参见*存储引擎功能*入座[第16章，*替代存储引擎*](storage-engines.html).

### InnoDB增强功能和新功能

有关`InnoDB`增强功能和新功能，请参阅：

-   这个`InnoDB`增强功能列表[第1.3节，“MySQL 8.0的新增功能”](mysql-nutshell.html).

-   这个[发行说明](https://dev.mysql.com/doc/relnotes/mysql/8.0/en/).

### 其他InnoDB信息和资源

-   对于`InnoDB`-有关术语和定义，请参见[MySQL词汇表](glossary.html).

-   为一个致力于`InnoDB`存储引擎，请参阅[MySQL论坛：：InnoDB](http://forums.mysql.com/list.php?22).

-   `InnoDB`与MySQL以相同的GNU GPL许可证版本2（1991年6月）发布。有关MySQL授权的更多信息，请参阅<http://www.mysql.com/company/legal/licensing/>.
