15.11.2 通用数据库服务器层

MySQL 可插拔存储引擎是 MySQL 数据库服务器中的组件,它负责对数据库执行实际的数据 I/O 操作,以及启用和实施针对特定应用程序需求的某些功能集。使用特定存储引擎的主要好处是,仅提供了特定应用程序所需的功能,因此数据库中的系统开销较小,最终结果是效率更高和数据库性能更高。这就是众所周知的 MySQL 具有如此高的性能,在行业标准基准测试中与专有的单片数据库匹配或胜过的原因之一。

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

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

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

    • Referential Integrity *:要求服务器通过 DDL 定义的外键来强制关系数据库参考完整性。
    • Physical Storage *:涉及 table 和索引的整个页面大小以及用于将数据存储到物理磁盘的格式的所有内容。
  • 索引支持:不同的应用场景往往会受益于不同的索引策略。每个存储引擎通常都有其自己的索引编制方法,尽管某些(例如 B 树索引)对于几乎所有引擎都是通用的。

  • 内存缓存:不同的应用程序对某些内存缓存策略的响应要比其他应用程序更好,因此尽管某些内存缓存是所有存储引擎所共有的(例如用于用户连接或 MySQL 的高速查询缓存的缓存),但其他应用程序仅是唯一定义的当使用特定的存储引擎时。

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

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

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