使用InnoDB表的好处
您可能会InnoDB
因为以下原因而发现表格有益:
- 如果服务器由于硬件或软件问题而崩溃,无论当时数据库中发生了什么,重新启动数据库后都无需执行任何特殊操作。
InnoDB
崩溃恢复会自动完成崩溃之前已提交的所有更改,并撤消正在处理但尚未提交的所有更改。只需重新启动,然后从上次中断的地方继续即可。 - 该
InnoDB
存储引擎维护它自己的缓冲池,在主内存缓存表和索引数据作为数据被访问。经常使用的数据直接从内存中处理。此缓存适用于多种类型的信息,并加快了处理速度。在专用数据库服务器上,通常将多达80%的物理内存分配给缓冲池。 - 如果将相关数据拆分到不同的表中,则可以设置强制引用完整性的外键。更新或删除数据,并自动更新或删除其他表中的相关数据。尝试将数据插入到辅助表中,而在主表中没有相应的数据,那么不良数据将自动被踢出。
- 如果数据在磁盘或内存中损坏,则校验和机制会在使用前提醒您注意虚假数据。
- 当为每个表设计具有适当主键列的数据库时,涉及这些列的操作会自动进行优化。在
WHERE
子句,ORDER BY
子句,GROUP BY
子句和联接操作中引用主键列非常快速。 - 插入,更新和删除通过称为更改缓冲的自动机制进行了优化。
InnoDB
不仅允许对同一表的并发读写访问,而且还缓存更改的数据以简化磁盘I / O。 - 性能收益不仅限于具有长时间运行的查询的巨型表。当从表中一遍又一遍地访问相同的行时,称为“自适应哈希索引”的功能将使这些查询变得更快,就好像它们来自哈希表一样。
- 您可以压缩表和关联的索引。
- 您可以创建和删除索引,而对性能和可用性的影响要小得多。
- 截断每表文件表空间非常快,并且可以释放磁盘空间供操作系统重用,而不是释放只能重用的系统表空间中的空间
InnoDB
。 BLOB
使用DYNAMIC行格式,对于长文本字段,表数据的存储布局更为有效。- 您可以通过查询INFORMATION_SCHEMA 表来监视存储引擎的内部工作情况。
- 您可以通过查询性能架构表来监视存储引擎的性能详细信息。
- 您可以自由地将
InnoDB
表与其他MySQL存储引擎的表混合使用,即使在同一条语句中也是如此。例如,您可以使用联接操作在单个查询中合并来自InnoDB
和MEMORY
表的数据。 InnoDB
设计用于处理大数据量时的CPU效率和最佳性能。InnoDB
表可以处理大量数据,即使在文件大小限制为2GB的操作系统上也是如此。
对于InnoDB
您可以在应用程序代码中应用特异性调节技术,请参阅“优化InnoDB表”。