15.11.2 通用数据库服务器层

MySQL 可插拔存储引擎是 MySQL 数据库服务器中的组件,负责为数据库执行实际的数据 I/O 操作,并启用和实施针对特定应用程序需求的某些功能集。使用特定存储引擎的一个主要好处是您只提供特定应用程序所需的功能,因此您在数据库中的系统开销更少,最终结果是更高效和更高的数据库性能。这是 MySQL 一直以具有如此高性能、在行业标准基准测试中匹配或击败专有单体数据库的原因之一。

从技术角度来看,存储引擎中有哪些独特的支持基础设施组件?一些关键的功能差异包括:

  • 并发性:某些应用程序比其他应用程序具有更细粒度的锁要求(例如行级锁)。选择正确的锁定策略可以减少开销,从而提高整体性能。该领域还包括对多版本并发控制或快照 读取等功能的支持。

  • 事务支持:并非每个应用程序都需要事务,但对于那些需要事务的应用程序,有非常明确的要求,例如 ACID 合规性等。

  • 参照完整性:需要让服务器通过 DDL 定义的外键强制执行关系数据库的参照完整性。

  • 物理存储:这涉及从表和索引的整体页面大小到用于将数据存储到物理磁盘的格式的所有内容。

  • 索引支持:不同的应用场景往往受益于不同的索引策略。每个存储引擎通常都有自己的索引方法,尽管有些(例如 B 树索引)几乎对所有引擎都是通用的。

  • 内存缓存:不同的应用程序对某些内存缓存策略的响应比其他的更好,因此尽管某些内存缓存对所有存储引擎都是通用的(例如用于用户连接或 MySQL 的高速查询缓存),但其他内存缓存仅在特定的存储引擎发挥作用。

  • 性能辅助:这包括用于并行操作、线程并发、数据库检查点、批量插入处理等的多个 I/O 线程。

  • 杂项目标功能:这可能包括对地理空间操作的支持、对某些数据操作的安全限制以及其他类似功能。

每组可插拔存储引擎基础结构组件都旨在为特定应用程序提供一组选择性的好处。相反,避免一组组件功能有助于减少不必要的开销。理所当然的是,了解特定应用程序的需求集并选择合适的 MySQL 存储引擎会对整体系统效率和性能产生巨大影响。