14.1 InnoDB 简介
InnoDB
是通用存储引擎,可兼顾高可靠性和高性能。在 MySQL 5.7 中,InnoDB
是默认的 MySQL 存储引擎。除非您配置了其他默认存储引擎,否则发出不带ENGINE=
子句的CREATE TABLE语句将创建InnoDB
table。
InnoDB 的主要优势
-
其DML操作遵循ACID模型,其中transactions具有commit,rollback和crash-recovery功能来保护用户数据。有关更多信息,请参见第 14.2 节“ InnoDB 和 ACID 模型”。
-
行级locking和 Oracle 风格consistent reads提高了多用户并发性和性能。有关更多信息,请参见第 14.7 节“ InnoDB 锁定和事务模型”。
-
InnoDB
table 将数据安排在磁盘上,以基于primary keys优化查询。每个InnoDB
table 都有一个称为clustered index的主键索引,该索引对数据进行组织以最大程度地减少主键查找的 I/O。有关更多信息,请参见第 14.6.2.1 节“群集索引和二级索引”。 -
为了维护数据integrity,
InnoDB
支持FOREIGN KEY约束。使用外键检查插入,更新和删除操作,以确保它们不会导致不同 table 之间的不一致。有关更多信息,请参见第 13.1.18.5 节“外键约束”。
table14.1 InnoDB 存储引擎功能
Feature | Support |
---|---|
B-tree indexes | Yes |
备份/时间点恢复 (在服务器中而不是在存储引擎中实现.) | Yes |
集群数据库支持 | No |
Clustered indexes | Yes |
Compressed data | Yes |
Data caches | Yes |
Encrypted data | 是(通过加密功能在服务器中实现;在 MySQL 5.7 和更高版本中,支持静态数据 table 空间加密.) |
外键支持 | Yes |
全文搜索索引 | 是(MySQL 5.6 和更高版本提供 InnoDB 对 FULLTEXT 索引的支持.) |
地理空间数据类型支持 | Yes |
地理空间索引支持 | 是(MySQL 5.7 和更高版本提供 InnoDB 对地理空间索引的支持.) |
Hash indexes | 否(InnoDB 在内部将哈希索引用于其自适应哈希索引功能.) |
Index caches | Yes |
Locking granularity | Row |
MVCC | Yes |
复制支持 (在服务器中而不是在存储引擎中实现.) | Yes |
Storage limits | 64TB |
T-tree indexes | No |
Transactions | Yes |
更新数据字典的统计信息 | Yes |
要将InnoDB
的功能与 MySQL 随附的其他存储引擎进行比较,请参阅第 15 章,备用存储引擎中的*“存储引擎功能”table。
InnoDB 增强功能和新功能
有关InnoDB
增强功能和新功能的信息,请参阅:
-
第 1.4 节“ MySQL 5.7 的新增功能”中的
InnoDB
增强功能列 table。 -
The Release Notes.
其他 InnoDB 信息和资源
-
有关
InnoDB
相关术语和定义,请参见MySQL Glossary。 -
有关专用于
InnoDB
存储引擎的论坛,请参阅MySQL Forums::InnoDB。 -
InnoDB
与 MySQL 在同一 GNU GPL 许可证版本 2(1991 年 6 月)下发布。有关 MySQL 许可的更多信息,请参见http://www.mysql.com/company/legal/licensing/。