18.11.2 通用数据库服务器层
MySQL 可插拔存储引擎是 MySQL 数据库服务器中的一个组件,负责执行实际数据 I/O 操作,并启用和强制某些特定应用程序需要的功能。使用特定的存储引擎的主要好处是,您只需要为特定的应用程序提供所需的功能,因此您可以减少数据库的系统开销,从而提高数据库的性能。这是 MySQL 高性能的原因之一,超过了专有数据库在行业标准基准测试中。
从技术角度看,存储引擎中的哪些独特的基础架构组件?一些关键特性区别包括:
-
并发性:一些应用程序需要更细粒度的锁定要求(例如行级锁定),选择正确的锁定策略可以减少开销,从而提高整体性能。这一领域还包括支持多版本并发控制或“快照”读操作。
-
事务支持:不是每个应用程序都需要事务,但对于那些需要事务的应用程序,有很明确的要求,如 ACID 一致性等。
-
引用完整性:需要服务器通过 DDL 定义的外键来强制关系数据库的引用完整性。
-
物理存储:涉及到表和索引的总页大小,以及用于存储数据的物理磁盘格式。
-
索引支持:不同的应用场景对不同的索引策略有所需求。每个存储引擎通常都有其自己的索引方法,although some (such as B-tree indexes) are common to nearly all engines.
-
内存缓存:不同的应用程序对不同的内存缓存策略有所响应,尽管某些内存缓存对所有存储引擎都是通用的(例如那些用于用户连接的缓存),但其他内存缓存仅在使用特定存储引擎时才唯一定义。
-
性能辅助:包括多个 I/O 线程用于并行操作、线程并发、数据库检查点、批量插入处理等。
-
其他目标特性:可能包括支持地理空间操作、安全限制某些数据操作等其他特性。
每个可插拔存储引擎基础架构组件都是为了提供特定的应用程序的选择性特性。相反,避免某些组件特性可以减少不必要的开销。因此,理解特定的应用程序的需求并选择合适的 MySQL 存储引擎可以对整体系统的效率和性能产生显著的影响。