MySQL 可插拔存储引擎是 MySQL 数据库服务器中负责执行数据库实际数据 I/O 操作的组件,它还支持并执行针对特定应用程序需求的某些功能集。使用特定存储引擎的主要好处是,您只获得特定应用程序所需的特性,因此数据库中的系统开销更小,最终结果是更高的效率和数据库性能。这也是 MySQL 一直以来的高性能闻名,在行业标准基准测试中与专有的单片式数据库相媲美或超越它们的原因之一。
从技术角度来看,存储引擎中有哪些独特的支持基础设施组件?一些关键的功能差异包括
并发性:某些应用程序的锁要求比其他应用程序更细粒度(例如行级锁)。选择合适的锁定策略可以减少开销,从而提高整体性能。此方面还包括对多版本并发控制或“快照”读取等功能的支持。
事务支持:并非所有应用程序都需要事务,但对于那些需要的应用程序,它们有非常明确的要求,例如 ACID 兼容性等。
参照完整性:需要服务器通过 DDL 定义的外键来执行关系数据库参照完整性。
物理存储:这涉及到从表和索引的整体页大小到用于存储数据的格式以及物理磁盘的所有内容。
索引支持:不同的应用程序场景往往从不同的索引策略中受益。每个存储引擎通常都有自己的索引方法,尽管有些(例如 B 树索引)对几乎所有引擎都是通用的。
内存缓存:不同的应用程序对某些内存缓存策略的响应更好,因此,尽管某些内存缓存对所有存储引擎都是通用的(例如用于用户连接的内存缓存),但其他内存缓存只有在特定存储引擎投入使用时才被唯一定义。
性能辅助:这包括用于并行操作的多个 I/O 线程、线程并发、数据库检查点、批量插入处理等等。
其他目标特性:这可能包括对地理空间操作的支持、对某些数据操作的安全限制以及其他类似的特性。
可插拔存储引擎基础设施组件的每一组都旨在为特定应用程序提供一组选择性优势。相反,避免一组组件特性有助于减少不必要的开销。可以想象,了解特定应用程序的要求集并选择合适的 MySQL 存储引擎,可以对整体系统效率和性能产生重大影响。