MySQL 可插拔存储引擎是 MySQL 数据库服务器中负责执行实际数据 I/O 操作的组件,以及启用和实施特定应用程序需要的功能集。使用特定存储引擎的主要优点是,您只会收到特定应用程序所需的功能,从而减少数据库中的系统开销,结果是更高效和更高的数据库性能。这也是 MySQL 一直以来具有如此高性能,匹配或击败专有的一体化数据库在行业标准基准测试中的原因。
从技术角度看,存储引擎中的一些独特的基础设施组件是什么?一些关键的功能区别包括:
-
并发控制:一些应用程序需要更细粒度的锁定要求(例如行级锁定),而其他应用程序则不同。选择正确的锁定策略可以减少开销,从而提高总体性能。这方面还包括对多版本并发控制或 “快照” 读取的支持。
-
事务支持:并不是所有应用程序都需要事务,但是对于那些需要事务的应用程序,有着非常明确的要求,例如 ACID 兼容性等。
-
参照完整性:需要服务器通过 DDL 定义的外键来实施关系数据库参照完整性。
-
物理存储:这包括表和索引的页面大小,以及用于将数据存储到物理磁盘的格式。
-
索引支持:不同的应用场景趋向于受益于不同的索引策略。每个存储引擎通常都有其自己的索引方法,尽管一些索引(例如 B 树索引)对几乎所有引擎都是通用的。
-
内存缓存:不同的应用程序对某些内存缓存策略的响应不同,因此尽管一些内存缓存(例如用户连接缓存)对所有存储引擎都是通用的,但其他缓存则仅在特定存储引擎下定义。
-
性能辅助工具:这包括多个 I/O 线程用于并行操作、线程并发、数据库检查点、批量插入处理等。
-
其他目标功能:这可能包括对地理空间操作的支持、某些数据操作的安全限制等其他功能。
每个可插拔存储引擎基础设施组件都是为了提供特定应用程序的选择性益处。相反,避免某些组件功能可以减少不必要的开销。因此,了解特定应用程序的需求并选择合适的 MySQL 存储引擎可以对总体系统效率和性能产生巨大的影响。