mysql数据库引擎

  MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:

    ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。

    MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据

    HEAPHEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格

    InnoDB:InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL++ API。在使用MYSQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。尽管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。

    MySQL 官方对InnoDB是这样解释的InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读,这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。

    InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。

    InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。

    InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。

    InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。 Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的 

    一般来说,MyISAM适合(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。InnoDB适合(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。

    一般情况下,MySQL会默认提供多种存储引擎,可以通过下面的查看:

    (1)看你的MySQL现在已提供什么存储引擎: mysql> show engines;

    (2)看你的MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%';

    (3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;

Memory引擎:

    Memory存储引擎是专为非交易型应用,高速存取数据,数据100%的存在内存中永远不会写入磁盘。因此适用于临时的,需要频繁读写,对性能速度要求严格的应用中。

Merge引擎:

    MERGE存储引擎将两个或两个以上的共同结构的MyISAM表行程一个单表。不支持事务,能有效地管理大型数据集。

MyISAM引擎:

    MyISAM引擎是MySQL数据库默认的引擎,快速的载入数据和读取数据,不支持事务和灾难自动恢复数据。

NDB/MySQL Cluster引擎:

    NDB/Cluster存储引擎是专为交易型应用,而且高可用性和系统崩溃恢复支持要求极为严格的应用设计的。无共享存储格式,内部采用了同步复制技术,以提供高达99.999%的可用性,数据主要存放在内存中,提供快速反应时间为查询和数据处理行动。

IBMDB2I引擎:

   该引擎允许用户创建一个类似IBM i5平台的DB2格式表,允许通过操作MySQL环境,进入DB2数据进行数据操作。数据可以很容易的从MySQL数据库格式转换成DB2数据格式,方便应用从MySQL访问SB2。

InnoDB存储引擎:

    InnoDB存储引擎是由Innobase开发公司所拥有,目前隶属于甲骨文公司。InnoDB存储引擎是用来处理交易型应用的,拥有自动崩溃恢复功能,保持数据的完整性,高并发控制和良好响应时间。InnoDB是完全开源的自由软件,其提供GPL许可同意任何人对其进行修改和重新分配。2008年4月,一种新的插件版本的InnoDB存储引擎正式发布,该版本具有新的数据压缩行的格式和更快的创建索引能力。

Maria引擎:

    Maria引擎最初是要替代MyISAM引擎的下一代引擎,它与MyISAM功能一致,但是多提供故障自动恢复数据的功能,在未来的计划中它还要实现事务的支持和数据仓库功能。

PBXT引擎:

    改引擎全称PrimeBase XT(PBXT),是由SNAP Innovation GmbH公司开发的。是专门为交易型应用设计的,支持崩溃自动恢复,大表处理良好,完美支持变长列大小(包括BLOB字段),单个文件存放单表结构,对表结构管理更加灵活可靠,PBXT目前计划在2009年6月RC。

ScaleDB引擎:

    SaleDB存储引擎是由ScaleDB公司开发的,其目的是为提供事务应用的程序处理大数据量,同时对高可用性和可扩展性要求高的环境设计的。ScaleDB是基于共享磁盘格式数据库集群架构,使多个节点群集操作在单一的物理位置上的数据。ScaleDB适用于大型Web应用程序,它拥有适当的云计算能力,因为服务器动态可以添加和删除群集节点。SaleDB不是开源的引擎,目前仍旧是测试版。

XtraDB引擎:

    XtraDB是由Percona是克隆的InnoDB存储引擎,但它自身也包括额外的功能,如支持多个回滚片段,附加性能诊断功能和提升执行速度功能,等等。

Calpont引擎:

    Calpont是一个多线程,扩展的,分布式的存储引擎,专门为分析数据仓库设计。Calpont可以部署在单台服务器上或部署在多机的网络体系结构中,使其良好的向外扩展的能力,与能够真正具有运行大规模并行处理(MPP系统)的能力。Calpont采用列导向存储架构,大大降低的I/O解析查询。

InfoBright-BrightHouse引擎:

    BrightHouse存储引擎是由Infobright公司开发的,BrightHouse存储引擎是专为大规模的数据仓库,传统的存档/历史系统设计的。可支持高达约30TB数据在一个数据库内的数据量级。BrightHouse采用列导向数据库的数据结构和压缩,平均压缩比10:1(包括所有额外的结构压缩),Infobright提供开源的社区版和专业的企业版。

Kickfire引擎:

    Kickfire存储引擎是有Kickfire公司开发的,是为支持数据仓库高达约3TB(与目前的1.0产品)的环境设计的。Kickfire是一个基于专有设备的解决方案,不是开源的产品。该解决方案的主要区别是利用SQL芯片加速SQL执行速度,就像显卡利用图形驱动设备显示一样。Kickfire还利用以列为导向的数据库存储结构和数据的压缩,使数据平均压缩比2-3:1.Kickfire根据数据环境不同提供和众多解决方案。

TokuDB引擎:

    TokuDB的Fractal Tree索引技术能针对大表提供高性能的插入/更新/删除操作,实习快速查询。TokuDB具有良好的可扩展性。TokuDB上应用在压缩数据,减少磁盘空间等应用上。

 

原文地址:https://www.cnblogs.com/jichunhu/p/2936368.html