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存储引擎的表。例如,您可以使用连接操作来组合来自InnoDB
和MEMORY
表的数据在单个查询中。 -
InnoDB
已被设计用于CPU效率和最大性能,以处理大量数据。 -
InnoDB
表可以处理大量数据,即使是在文件大小限制为2GB的操作系统上。
有关InnoDB
-特定的调整技术,您可以将其应用于MySQL服务器和应用程序代码,请参阅第10.5节,“优化InnoDB表”。