InnoDB
表具有以下优点:
-
如果服务器意外退出,因为硬件或软件问题,无论数据库中正在发生什么事情,在重新启动数据库时,您不需要做任何特殊的事情。
InnoDB
崩溃恢复自动完成提交的更改,并撤销未提交的更改,允许您重新启动并继续从您离开的地方开始。见 第 17.18.2 节,“InnoDB 恢复”。 -
InnoDB
存储引擎维护自己的缓冲池,该缓冲池将表和索引数据缓存在主内存中,以便快速访问数据。经常使用的数据直接从内存中处理。这缓冲池适用于许多类型的信息,并加速处理。在专用数据库服务器上,通常将物理内存的 80% 分配给缓冲池。见 第 17.5.1 节,“缓冲池”。 -
如果您将相关数据拆分到不同的表中,可以设置外键以强制参照完整性。见 第 15.1.20.5 节,“FOREIGN KEY 约束”。
-
如果磁盘或内存中的数据变得损坏,校验和机制将在您使用数据之前警告您损坏的数据。
innodb_checksum_algorithm
变量定义了InnoDB
使用的校验和算法。 -
当您设计数据库时,适当地设计主键列对于每个表,涉及这些列的操作将自动优化。它非常快速地引用主键列在
WHERE
子句、ORDER BY
子句、GROUP BY
子句和连接操作中。见 第 17.6.2.1 节,“聚簇索引和辅助索引”。 -
插入、更新和删除操作通过自动机制优化,称为更改缓冲。
InnoDB
不仅允许并发读取和写入访问同一个表,还缓存更改的数据以流畅磁盘 I/O。见 第 17.5.2 节,“更改缓冲”。 -
性能优势不仅限于大型表和长时间查询。当同一行数据被反复访问时,自适应哈希索引将接管,使这些查找变得更快,如同它们来自哈希表。见 第 17.5.3 节,“自适应哈希索引”。
-
您可以压缩表和关联的索引。见 第 17.9 节,“InnoDB 表和页压缩”。
-
您可以加密数据。见 第 17.13 节,“InnoDB 静态数据加密”。
-
您可以创建和删除索引,并执行其他 DDL 操作,而对性能和可用性影响很小。见 第 17.12.1 节,“在线 DDL 操作”。
-
截断文件每表表空间非常快,并可以释放磁盘空间供操作系统重用,而不仅仅是
InnoDB
。见 第 17.6.3.2 节,“文件每表表空间”。 -
表数据的存储布局对于
BLOB
和长文本字段更高效,以DYNAMIC
行格式。见 第 17.10 节,“InnoDB 行格式”。 -
您可以通过查询
INFORMATION_SCHEMA
表来监控存储引擎的内部工作。见 第 17.15 节,“InnoDB INFORMATION_SCHEMA 表”。 -
您可以通过查询性能模式表来监控存储引擎的性能详细信息。见 第 17.16 节,“InnoDB 与 MySQL 性能模式集成”。
-
您可以将
InnoDB
表与其他 MySQL 存储引擎的表混合使用,甚至在同一个语句中。例如,您可以使用连接操作将InnoDB
和MEMORY
表中的数据组合到单个查询中。 -
InnoDB
被设计为 CPU 高效和最大性能,以处理大量数据。 -
InnoDB
表可以处理大量数据,甚至在操作系统文件大小限制为 2GB 的情况下。
要了解特定于 InnoDB
的调整技术,可以应用于 MySQL 服务器和应用程序代码,请参阅 第 10.5 节,“为 InnoDB 表优化”。