在MySQL 5.1中,MySQL AB引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运新的MySQL服务器中。
本章介绍了插件式存储引擎体系结构,概要介绍了与MySQL一起提供的各种存储引擎,介绍了将存储引擎赋给表的方法,以及插入和拔出存储引擎的方法。
使用MySQL插件式存储引擎体系结构,允许数据库专业人员为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求。采用MySQL服务器体系结构,由于在存储级别上提供了一致和简单的应用模型和API,应用程序编程人员和DBA可不再考虑所有的底层实施细节。因此,尽管不同的存储引擎具有不同的能力,应用程序是与之分离的。
在下图中,以图形方式介绍了MySQL插件式存储引擎体系结构:
插件式存储引擎体系结构提供了标准的管理和支持服务集合,它们对所有的基本存储引擎来说是共同的。存储引擎本身是数据库服务器的组件,负责对在物理服务器层面上维护的基本数据进行实际操作。
这是一种高效的模块化体系结构,它为那些希望专注于特定应用需求的人员提供了巨大的便利和益处,这类特殊应用需求包括数据仓储、事务处理、高可用性情形等,同时还能利用独立于任何存储引擎的一组接口和服务。
应用程序编程人员和DBA通过位于存储引擎之上的连接器API和服务层来处理MySQL数据库。如果应用程序的变化需要改变底层存储引擎,或需要增加1个或多个额外的存储引擎以支持新的需求,不需要进行大的编码或进程更改就能实现这类要求。MySQL服务器体系结构提供了一致和易于使用的API,这类API适用于多种存储引擎,通过该方式,该结构将应用程序与存储引擎的底层复杂性隔离开来。
MySQL插件式存储引擎是MySQL数据库服务器中的组件,负责为数据库执行实际的数据I/O操作,并能允许和强制执行面向特殊应用需求的特定特性集合。使用特殊存储引擎的主要优点之一在于,仅需提供特殊应用所需的特性,因此,数据库中的系统开销较小,最终结果具有更有效和更高的数据库性能。这也是MySQL被始终视为具有高性能的原因之一,在行业标准基准方面,它能匹敌或击败专有的整体式数据库。
从技术角度上看,在存储引擎中,一些独特的支持底层结构的组件是什么呢?一些关键差别包括:
· 并发性:某些应用程序比其他应用程序具有很多的颗粒级锁定要求(如行级锁定)。选择正确的锁定策略能够减少开销,并有助于整体性能的提升。它还包括对多种能力的支持,如多版本并发性控制或“快照”读取等。
· 事务支持:并非所有的应用程序都需要事务,但对的确需要事务的应用程序来说,有着定义良好的需求,如ACID兼容等。
· 引用完整性:通过DDDL定义的 外键,服务器需要强制保持关联数据库的引用完整性。
· 物理存储:它包括各种各样的事项,从表和索引的总的页大小,到存储数据所需的格式,到物理磁盘。
· 索引支持:不同的应用程序倾向于采用不同的索引策略,每种存储引擎通常有自己的编制索引方法,但某些索引方法(如B-tree索引)对几乎所有的存储引擎来说是共同的。
· 内存高速缓冲:与其他应用程序相比,不同的应用程序对某些内存高速缓冲策略的响应更好,因此,尽管某些内存高速缓冲对所有存储引擎来说是共同的(如用于用户连接的高速缓冲,MySQL的高速查询高速缓冲等),其他高速缓冲策略仅当使用特殊的存储引擎时才唯一定义。
· 性能帮助:包括针对并行操作的多I/O线程,线程并发性,数据库检查点,成批插入处理等。
· 其他目标特性:可能包括对地理空间操作的支持,对特定数据处理操作的安全限制等。
每组插件式存储引擎基本组件均采用了相应的设计,能够为特定应用提供可选择的特性集合。从反面角度看,避免使用组件特性集合有助于避免不必要的开销。因此,显而易见,应理解特定应用程序的需求集合,并选择恰当的能大幅度改善系统整体效率和性能的MySQL存储引擎。
与MySQL一起提供的各种存储引擎在设计时考虑了不同的使用情况。为了更有效地使用插件式存储体系结构,最好了解各种存储引擎的优点和缺点。
在下面的表格中,概要介绍了与MySQL一起提供的存储引擎:
下述存储引擎是最常用的:
· MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。
· InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。
· BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。
· Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
· Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
· Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
· Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式环境或数据集市环境。
· Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性。
· Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。
请记住,对于整个服务器或方案,你并不一定要使用相同的存储引擎,你可以为方案中的每个表使用不同的存储引擎,这点很重要。
关于MySQL中所包含存储引擎的详细信息,请参见14.4节,“选择存储引擎”。
可以在创建新表时指定存储引擎,或通过使用
ALTER TABLE语句指定存储引擎。
要想在创建表时指定存储引擎,可使用ENGINE参数:
CREATE TABLE engineTest(
id INT
) ENGINE = MyISAM;
要想更改已有表的存储引擎,可使用ALTER TABLE语句:
ALTER TABLE engineTest ENGINE = ARCHIVE;
14.6. 存储引擎和事务
下述存储引擎支持事务:
· InnoDB:通过MVCC支持事务,允许COMMIT、ROLLBACK和保存点。
· NDB:通过MVCC支持事务,允许COMMIT和ROLLBACK。
· BDB:支持事务,允许COMMIT和ROLLBACK。
14.7. 插入存储引擎
能够使用存储引擎之前,必须使用
INSTALL PLUGIN语句将存储引擎plugin(插件)装载到
mysql。例如,要想加载
example引擎,首先应加载
ha_example.so模块:
INSTALL PLUGIN ha_example SONAME 'ha_example.so';
文件.so必须位于MySQL服务器库目录下(典型情况下是installdir/lib)。
14.8. 拔出存储引擎
要想拔出存储引擎,可使用UNINSTALL PLUGIN语句:
UNINSTALL PLUGIN ha_example;
如果拔出了正被已有表使用的存储引擎,这些表将成为不可访问的。拔出存储引擎之前,请确保没有任何表使用该存储引擎。
分享到:
相关推荐
### MySQL插件式存储引擎体系结构详解 #### 一、概述 MySQL的插件式存储引擎体系结构是一种灵活的设计模式,允许用户根据具体的应用场景选择最适合的存储引擎。这一架构的最大优势在于它允许应用程序和数据库管理...
全书首先全景式地介绍了MySQL独有的插件式存储引擎,分析了MySQL的各种存储引擎的优势和应用环境。接着以InnoDB的内部实现为切入点,逐一详细讲解了InnoDB存储引擎内部的各个功能模块,包括InnoDB存储引擎的体系结构...
### MySQL体系结构及原理...综上所述,MySQL的体系结构和InnoDB存储引擎的设计都是为了应对现代数据处理的挑战。通过对这些关键问题的理解,我们可以更好地优化MySQL的配置和使用策略,以满足各种应用场景的需求。
MySQL 的可插拔存储引擎体系结构使得数据库管理员和开发者无需关心底层实现细节,只需关注应用程序的需求。这降低了管理复杂性,提高了数据库系统的适应性。在配置上,通过修改`STORAGE_ENGINE`变量即可更改默认存储...
8. 插件式存储引擎(pluggable storage engines):MySQL的存储引擎是插件式的,不同的存储引擎有其特定的实现机制和特点。如InnoDB存储引擎支持事务处理和行级锁定,MyISAM适用于读操作较多的场景。 9. 物理文件...
通过对MySQL体系结构的深入解析,我们可以看出MySQL采用了高度模块化的设计,其中包含了连接池、管理服务、SQL接口等多个组件,以及插件式的存储引擎机制。此外,MySQL还针对不同的存储引擎设计了特定的线程管理策略...
MySQL是一个广泛使用的开源关系数据库管理系统(RDBMS),其中InnoDB是其最常用...MySQL的体系结构和InnoDB存储引擎的深入理解对于数据库管理员来说至关重要,它可以帮助他们优化数据库性能,提高系统的稳定性和效率。
14. 插件式存储引擎体系结构 15. 存储引擎和表类型 16. 编写自定义存储引擎 17. MySQL簇 18. 分区 19. MySQL中的空间扩展 20. 存储程序和函数 21. 触发程序 22. 视图 23. INFORMATION_SCHEMA信息数据库 24. 精度数学...
作为专栏文章《MySQL 性能优化》的第一篇,本文介绍 MySQL 的服务器体系结构,包括物理结构、逻辑结构以及插件式存储引擎。 实例和数据库 我们通常所说的 MySQL 数据库服务器由一个实例(instance)以及一个数据库...
其中,存储引擎是 MySQL 体系结构的重要组成部分,负责存储和管理数据库中的数据。 MySQL 存储引擎 ----------------- MySQL 提供了多种存储引擎,包括 InnoDB、MyISAM、NDB、MEMORY、Archive、Federated 等。每...
14. 插件式存储引擎体系结构 15. 存储引擎和表类型 16. 编写自定义存储引擎 17. MySQL簇 18. 分区 19. 中的空间扩展 20. 存储程序和函数 21. 触发程序 22. 视图 23. INFORMATION_SCHEMA信息数据库 24. 精度数学 25. ...
内容包含Mysql的一般信息、安装教程、数据库管理、优化、语言结构、字符集支持、列类型、函数和操作符、SQL语句语法、插件式存储引擎体系结构、存储引擎和表类型、编写自定义存储引擎、Mysql簇、Mysql的空间扩展、...
MySQL的体系结构包括多个组件,如连接池、管理服务和工具组件、SQL接口、查询分析器、优化器、缓冲(Cache)组件以及插件式存储引擎。存储引擎位于这些组件的底层,负责实际的数据存储和处理。例如,连接池组件管理...
mysql是独有的插件式体系结构,各个存储引擎有自己的特点。innodb存储引擎:[/color][/b]面向oltp(onlinetransactionprocessing)、行锁、支持外键、非锁定读、默认采用repeaable级别(可重复读)通过next-keylocking...
mysql是独有的插件式体系结构,各个存储引擎有自己的特点。 mysql各个存储引擎概述:innodb存储引擎:[/color][/b] 面向oltp(online transaction processing)、行锁、支持外键、非锁定读、默认采用repeaable级别...
体系架构方面,MySQL采用的是插件式存储引擎体系结构,存储引擎负责为MySQL数据库执行实际的数据输入/输出操作。其中,MyISAM存储引擎是MySQL默认存储引擎,适用于Web、数据仓库和其他应用环境。MyISAM不支持事务和...
14. 插件式存储引擎体系结构 15. 存储引擎和表类型 16. 编写自定义存储引擎 17. MySQL簇 18. 分区 19. 中的空间扩展 20. 存储程序和函数 21. 触发程序 22. 视图 23. INFORMATION_SCHEMA信息数据库 24. ...
MySQL 体系结构具有强大的体系结构、集群架构的多样性、第三方工具种类丰富、社区用户活跃、完整的复制体系、不同的插件式存储引擎的支持(InnoDB)、强大的多行事务的支持等特点。 MySQL 备份恢复 MySQL 备份...
本篇文章将从MySQL体系结构、存储引擎、常见高可用架构三个方面进行详细说明。 首先,我们来看MySQL体系结构。MySQL由多个不同的层次构成,包括连接层(Connectors)、SQL层(SQL Layer)、插件式存储引擎...