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