MySQL数据引擎介绍与选择方法
在MySQL 5.1,MySQL AB公司引入了一个新的插件式存储引擎的架构,使得存储引擎被加载到新的MySQL服务器。
使用MySQL插件存储引擎架构允许数据库专业人员为特定的应用程序需求选择专门的存储引擎,并且不需要管理任何特殊的应用程序编码要求。由于在存储级别上的一致和简单的应用程序模型和API,应用程序程序员和DBA不能再考虑底层实现的所有细节。因此,尽管不同的存储引擎具有不同的功能,但应用程序与它们分离。
MySQL支持多种不同类型的存储引擎作为处理器,MySQL存储引擎包括事务安全表引擎和非事务性安全表引擎:
MyISAM管理非事务表,它提供了高速存储和检索,以及全文检索capabilities.myisam是所有MySQL的配置支持,它是默认的存储引擎,除非你配置MySQL默认使用一个引擎。
内存存储引擎提供的存储表。合并存储引擎允许收集要处理相同的MyISAM表作为一个单独的表。和MyISAM一样,记忆和MERGE存储引擎处理非事务表,这两个引擎也在默认情况下,MySQL包括。
注意:内存存储引擎被正式确定为堆引擎。
InnoDB和BDB存储引擎提供交易安全table.bdb包含在MySQL最大二元分布,发表对操作系统的支持it.innodb也包含在所有MySQL 5.1二进制分布在默认情况下,你可以允许或禁止通过配置MySQL为任何你喜欢的引擎。
实例存储引擎是一个存根引擎,它不做任何事。你可以用这个引擎来创建一个表,但没有数据存储或检索。这个引擎的目的是服务,在MySQL源代码示例,演示如何开始写一个新的存储发动机。在同样的方式,它的主要兴趣是开发商。
NDB集群存储引擎,MySQL集群用来实现一个表,分为多个计算机上,在MySQL-Max 5.1二进制分发,存储引擎是目前仅支持Linux,Solaris,和Mac OS X的未来的MySQL的分布,我们要添加其他平台支持发动机,包括Windows。
归档存储引擎用于在没有索引的情况下以非常小的方式覆盖大量存储的数据。
CSV存储引擎在文本文件中以逗号分隔的格式存储数据。
黑洞的存储引擎接受而不是数据的存储和检索,总是返回一个空集。
联邦存储引擎将数据保存在远程数据库中。在MySQL 5.1中,它只使用MySQL,使用mysql C客户机API。在将来的分发中,我们希望它使用其他驱动器或客户机连接方法连接到另一个数据源。
插件存储引擎体系结构为所有基本存储引擎提供了一套标准的管理和支持服务,存储引擎本身是数据库服务器的组成部分,负责物理服务器级别上维护的基本数据的实际操作。
这是一个高度模块化的架构,它为那些希望专注于特定的应用需求提供了极大的便利和效益,这种特殊的应用需求,包括数据仓库、事务处理、高可用性的情况下,同时使用独立的任何存储引擎接口和一组服务。
应用程序员和DBA通过连接器接口及以上存储引擎服务层处理MySQL数据库。如果应用的变化需要改变底层存储引擎,或添加1个或更多的额外的存储引擎,支持新的要求,我们可以达到这个要求没有大的编码或过程change.mysql服务器架构提供一致的和易于使用的API。这种API适用于多个存储引擎。通过这种方式,应用程序隔离了存储引擎的底层复杂性。
在下图中,MySQL插件存储引擎架构以图形方式示出。
两。选择存储引擎
MySQL提供的各种存储引擎考虑不同的设计用途,为了更有效地使用插件存储架构,最好了解各种存储引擎的优缺点。
在下面的表中,给出了用MySQL提供的存储引擎的概述。
下列存储引擎是最常用的:
MyISAM:默认的MySQL存储引擎插件,这是一种最常用的Web存储引擎、数据仓库等应用环境。注意,通过改变storage_engine配置变量,对MySQL服务器的默认存储引擎可以很容易地改变。
InnoDB:用于事务处理应用程序,有很多功能,包括酸处理的支持。
BDB:事务处理引擎,可以取代InnoDB,支持提交、回滚、和其他交易的特点。
内存:保存RAM中的所有数据,并快速地访问需要快速引用和其他类似数据的环境。
合并:让MySQL DBA或开发人员将一系列等价MyISAM表的逻辑,并参考他们的1个对象。它适用于大型数据库环境,如数据仓库。
归档:为大量引用很少的历史记录、归档或安全审计信息提供存储和检索的完美解决方案。
联邦:它能够连接多个独立的MySQL服务器,并从多个物理服务器创建逻辑数据库,非常适合分布式环境或数据集市环境。
群集数据库引擎集群/ NDB:MySQL是特别适合于高性能的查询要求的应用,这也要求最高的正常工作时间和可用性。
其他:其他存储引擎包括CSV(逗号作为引用的数据库表文件(黑洞),在数据库应用程序的临时禁令,例如引擎(输入)和可提供的插件式存储引擎快速创建自定义帮助)。
记住,对于整个服务器或程序,您不必使用相同的存储引擎。对于程序中的每个表,可以使用不同的存储引擎,这是非常重要的。
三。将存储引擎分配给表
可以在创建新表时指定存储引擎,也可以使用更改表语句指定存储引擎。
若要在创建表时指定存储引擎,可以使用引擎参数:
创建表等(
ID int
MyISAM引擎=);
您还可以将type选项用于创建表语句,告诉MySQL您要创建的是什么类型的表。
创建表等(
ID int
类型= MyISAM);
虽然在MySQL 5.1中仍然支持类型,但是现在引擎是首选项。
如果你忽略了发动机或类型选项,默认的存储引擎使用。一般默认的是MyISAM,但你可以使用默认存储引擎或默认表式服务器启动选项来改变它,或通过设置storage_engine或table_type系统变量的变化。
要更改现有表的存储引擎,可以使用更改表语句:
改变tableenginetestengine =档案;
修改表的MyISAM引擎=;
修改表类型= BDB;
如果你想用一个存储引擎,不编译到MySQL,或尝试使用MySQL存储引擎编译成还没有激活,而不是创建一个MySQL MyISAM类型表。上述行为方便当您复制MySQL服务器,支持不同的存储引擎的表之间。例如,在复制设置,你的主服务器可以增加安全事务存储引擎支持,但只使用非事务存储引擎更快的服务器。)
的MyISAM表自动更换时,可用指定类型,这将混淆的MySQL的新用户。每当表格自动改变,产生一个警告。
MySQL总是创建一个文件保存的表和列的定义。表和索引数据可以存储在一个或多个文件,根据表格的类型。服务器创建的文件在存储引擎层。附加文件存储引擎需要创建单独的管理表。
数据库可以包含不同类型的表。
四。存储引擎和事务
下面的存储引擎支持事务:
InnoDB:提交,回滚,并保存点允许通过MVCC支持交易。
导航:支持交易通过MVCC,允许提交和回滚。
BDB:支持交易,允许提交和回滚。
交易安全表(TST)在非事务安全表的几个优点(NTST)。
即使MySQL崩溃或遇到硬件问题,也可以自动从备份和事务日志中恢复或恢复,您可以检索数据。
你可以合并报表和接受它们的提交语句同时(如果将被禁止)。
你可以执行回滚(如果忽略你的变化将是被禁止的)。
如果更新失败,所有更改都会返回(使用非事务性安全表,所有更改都是永久的)。
事务安全存储引擎可以为那些当前具有多个更新的表提供更好的部署。
非事务性安全表本身有几个优点,因为没有交易成本,所有的优点都可能发生。
快
需要更少的磁盘空间
更新的执行需要更少的内存。
你可以合并交易安全和非交易安全表在同一声明中得到最好的两个。然而,在被禁止在自动提交事务,非事务安全表仍然是立即提交并不会回滚。
虽然MySQL支持多个事务安全存储引擎,但是为了获得最好的结果,您不应该在一个事务中混用不同的表类型。
五。插入搜索引擎
在您可以使用存储引擎,你必须使用安装插件声明加载存储引擎的插件(plug-in)MySQL。例如,为了负荷发动机的例子,ha_example.so模块应先装:
安装pluginha_examplesoname'ha_example。;
文件。所以必须位于MySQL服务器库目录(通常在installDir /库的情况下)。
六。拉出存储引擎
要退出存储引擎,可以使用卸载插件语句:
卸载pluginha_example;
如果你拔出存储引擎,是由现有的表,这些表将变得不可访问。在你拔出存储引擎,确保没有表使用的存储引擎。
为了安装插件存储引擎,插件文件必须位于适当的mysql库目录中,而发出安装插件语句的用户必须具有超级权限。
创建表时,可以指定引擎关键字使用的存储引擎,如果省略省略,则使用系统的默认存储引擎:
创建表的T(I型)= MyISAM引擎;
查看系统中支持的存储引擎的类型:
显示引擎;
标准安装程序只提供部分引擎支持。如果你需要使用其他的存储引擎,你需要重新编译源代码不同parameters.default显示系统的默认存储引擎,可以通过修改配置参数的变化:
默认的MyISAM存储引擎=
查看存储引擎的特定信息。
MySQL >显示引擎INNODB STATUS G;