Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Benefits of Using InnoDB Tables

17.1.1 使用 InnoDB 表的优点

InnoDB 表具有以下优点:

  • 如果服务器因硬件或软件问题意外退出,不管数据库在该时刻发生了什么变化,你不需要执行任何特殊操作以便重新启动数据库。InnoDB 崩溃恢复自动 finalize 已经提交的更改,并撤销尚未提交的更改,允许您重新启动并继续从中断的地方。请参阅第17.18.2节,“InnoDB恢复”

  • InnoDB 存储引擎维护自己的缓冲池,该缓冲池将表和索引数据缓存在主内存中,以便在访问数据时直接从内存中处理。频繁使用的数据可以直接从内存中处理。这 caches 信息类型,提高了处理速度。在专门用于数据库服务器的机器上,通常将物理内存的80%分配给缓冲池。请参阅第17.5.1节,“缓冲池”

  • 如果您将相关数据分割到不同的表中,可以设置外键来强制引用完整性。请参阅第15.1.20.5节,“FOREIGN KEY约束”

  • 如果磁盘或内存中的数据变得损坏,checksum 机制将在您使用它之前警告您。innodb_checksum_algorithm 变量定义了 InnoDB 使用的checksum 算法。

  • 当您为每个表设计合适的主键列,涉及这些列的操作将自动优化。引用主键列在WHERE子句、ORDER BY子句、GROUP BY子句和连接操作时非常快。请参阅第17.6.2.1节,“聚簇索引和次要索引”

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

  • 性能优化不仅限于大表和长时间查询。当从同一表访问相同的行时,Adaptive Hash Index将取代这些查找,使它们变得更加快速,就像来自哈希表一样。请参阅第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 表”

  • 您可以通过查询性能_schema表来监控存储引擎的性能详细信息。请参阅第17.16节,“InnoDB Integration with MySQL Performance Schema”

  • 您可以在同一个语句中混合使用InnoDB表和来自其他MySQL存储引擎的表。例如,您可以使用连接操作来组合来自InnoDBMEMORY表的数据在单个查询中。

  • InnoDB已被设计用于CPU效率和最大性能,以处理大量数据。

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

有关InnoDB-特定的调整技术,您可以将其应用于MySQL服务器和应用程序代码,请参阅第10.5节,“优化InnoDB表”