17.1 InnoDB 简介
InnoDB
是一种通用存储引擎,平衡高可靠性和高性能。在 MySQL 8.4 中,InnoDB
是默认的 MySQL 存储引擎。除非您已经配置了不同的默认存储引擎,否则使用CREATE TABLE
语句没有ENGINE
子句创建的表将是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-tree索引 | 是 |
备份/点时恢复(在服务器中实现,而不是在存储引擎中。) | 是 |
集群数据库支持 | 否 |
聚簇索引 | 是 |
压缩数据 | 是 |
数据缓存 | 是 |
加密数据 | 是(通过加密函数在服务器中实现;从MySQL 5.7开始支持数据静态加密。) |
外键支持 | 是 |
全文搜索索引 | 是(从MySQL 5.6开始支持FULLTEXT索引。) |
地理空间数据类型支持 | 是 |
地理空间索引支持 | 是(从MySQL 5.7开始支持地理空间索引。) |
哈希索引 | 否(InnoDB内部使用哈希索引来实现Adaptive Hash Index特性。) |
索引缓存 | 是 |
锁定粒度 | 行 |
MVCC | 是 |
复制支持(在服务器中实现,而不是在存储引擎中。) | 是 |
存储限制 | 64TB |
T-树索引 | 否 |
事务 | 是 |
更新数据字典统计信息 | 是 |
要比较InnoDB
与MySQL提供的其他存储引擎的特性,请查看第18章,Alternative Storage Engines中的Storage Engine Features表。
关于InnoDB
的增强功能和新特性,请参阅:
-
《MySQL 8.4自MySQL 8.0以来新增内容》(第1.4节,“What Is New in MySQL 8.4 since MySQL 8.0”中的
InnoDB
增强功能列表。 -
《Release Notes》(https://dev.mysql.com/doc/relnotes/mysql/8.4/en/).
-
关于
InnoDB
-相关术语和定义,请查看MySQL Glossary. -
关于专门用于
InnoDB
存储引擎的论坛,请查看MySQL Forums::InnoDB. -
InnoDB
根据同样GNU GPL License Version 2(1991年6月)发布的MySQL。关于MySQL授权,请查看http://www.mysql.com/company/legal/licensing/.