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