Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  / 15.1 InnoDB简介  /  15.1.1 使用 InnoDB 表的好处

15.1.1 使用 InnoDB 表的好处

InnoDB表具有以下优点:

  • 如果服务器由于硬件或软件问题意外退出,无论当时数据库中发生了什么,您都不需要在重新启动数据库后执行任何特殊操作。InnoDB崩溃恢复会自动完成崩溃之前提交的更改,并撤消正在进行但未提交的更改,从而允许您重新启动并从中断的地方继续。请参阅 第 15.18.2 节,“InnoDB 恢复”

  • InnoDB存储引擎维护自己的缓冲池,在访问数据时在主内存中缓存表和索引数据 。经常使用的数据直接从内存中处理。此缓存适用于多种类型的信息并加快处理速度。在专用数据库服务器上,通常会将高达 80% 的物理内存分配给缓冲池。请参阅第 15.5.1 节,“缓冲池”

  • 如果将相关数据拆分到不同的表中,则可以设置外键来强制执行参照完整性。请参阅 第 13.1.20.5 节,“外键约束”

  • 如果数据在磁盘或内存中损坏,校验和机制会在您使用伪造数据之前提醒您。该 innodb_checksum_algorithm 变量定义 所使用的校验和算法 InnoDB

  • 当您为每个表设计一个具有适当主键列的数据库时,涉及这些列的操作会自动优化。WHERE 在子句、ORDER BY子句、 GROUP BY 子句和连接操作中引用主键列非常快 。请参阅 第 15.6.2.1 节,“聚簇索引和二级索引”

  • 插入、更新和删除通过称为更改缓冲的自动机制进行优化。InnoDB 不仅允许对同一个表进行并发读写访问,它还缓存更改的数据以简化磁盘 I/O。请参阅 第 15.5.2 节,“更改缓冲区”

  • 性能优势不仅限于具有长时间运行查询的大型表。当从表中反复访问相同的行时,自适应哈希索引会接管这些查找,使这些查找更快,就像它们来自哈希表一样。请参阅第 15.5.3 节,“自适应哈希索引”

  • 您可以压缩表和关联的索引。请参阅 第 15.9 节,“InnoDB 表和页面压缩”

  • 您可以加密您的数据。请参阅 第 15.13 节,“InnoDB 静态数据加密”

  • 您可以创建和删除索引以及执行其他 DDL 操作,而对性能和可用性的影响要小得多。请参阅 第 15.12.1 节,“在线 DDL 操作”

  • 截断 file-per-table 表空间非常快,可以释放磁盘空间供操作系统重用,而不仅仅是InnoDB. 请参阅 第 15.6.3.2 节,“File-Per-Table 表空间”

  • 表数据的存储布局对于 BLOB长文本字段更有效,采用DYNAMIC行格式。请参阅 第 15.10 节,“InnoDB 行格式”

  • INFORMATION_SCHEMA您可以通过查询表 来监控存储引擎的内部工作。请参阅 第 15.15 节,“InnoDB INFORMATION_SCHEMA 表”

  • 您可以通过查询 Performance Schema 表来监控存储引擎的性能细节。请参阅 第 15.16 节,“InnoDB 与 MySQL Performance Schema 的集成”

  • 您可以将InnoDB表与来自其他 MySQL 存储引擎的表混合使用,即使在同一条语句中也是如此。例如,您可以使用连接操作 在单个查询中 合并来自表InnoDB和 表的数据。MEMORY

  • InnoDB专为处理大数据量时的 CPU 效率和最大性能而设计。

  • InnoDB表可以处理大量数据,即使在文件大小限制为 2GB 的操作系统上也是如此。

对于InnoDB可以应用于 MySQL 服务器和应用程序代码的特定调优技术,请参阅 第 8.5 节,“优化 InnoDB 表”