# 16.11.2 通用数据库服务器层

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

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

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

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

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

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

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

  • 内存缓存: 不同的应用程序对某些内存缓存策略的响应比其他应用程序更好,因此尽管某些内存缓存对所有存储引擎都是通用的(例如用于用户连接的那些),但其他应用程序仅在使用特定存储引擎时才唯一定义。

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

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

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