二、MySQL常见数据库引擎及比较?

MySQL存储引擎简介数据库

MySQL支持数个存储引擎做为对不一样表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎缓存

 

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在全部MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另一个引擎。安全

 

MEMORY存储引擎提供“内存中”表。MERGE存储引擎容许集合将被处理一样的MyISAM表做为一个单独的表。就像MyISAM同样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。服务器

 

注:MEMORY存储引擎正式地被肯定为HEAP引擎。并发

 

InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操做系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你能够按照喜爱经过配置MySQL来容许或禁止任一引擎。
EXAMPLE存储引擎是一个“存根”引擎,它不作什么。你能够用这个引擎建立表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。一样,它的主要兴趣是对开发者。分布式

 

NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在将来的MySQL分发版中,咱们想要添加其它平台对这个引擎的支持,包括Windows。工具

 

ARCHIVE存储引擎被用来无索引地,很是小地覆盖存储的大量数据。性能

CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。优化

 

BLACKHOLE存储引擎接受但不存储数据,而且检索老是返回一个空集。spa

 

FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一块儿工做,使用MySQL C Client API。在将来的分发版中,咱们想要让它使用其它驱动器或客户端链接方法链接到另外的数据源。

 

如何选择最适合你的存储引擎呢?

 

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存储引擎比较

MyISAM

 

   MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问(读)速度快,对事务完整性没有要求。 
  MyISAM除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操做,其代价是你须要常常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的MyISAMPACK工具。MYISAM强调了快速读取操做,这可能就是为何MySQL受到了WEB开发如此青睐的主要缘由:在WEB开发中你所进行的大量数据操做都是读取操做。因此,大多数虚拟主机提供商和INTERNET平台提供商只容许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不能在表损坏后恢复数据。
  InnoDB存储引擎提供了具备提交、回滚和崩溃恢复能力的事务安全。可是比起MyISAM存储引擎,InnoDB写的处理效率差一些而且会占用更多的磁盘空间以保留数据和索引。

 

MEMORY/HEAP

 

  MEMORY(又叫HEAP)存储引擎使用存在内存中的内容来建立表。每一个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问很是得快,由于它的数据是放在内存中的,而且默认使用HASH索引。可是一旦服务关闭,表中的数据就会丢失掉。 HEAP容许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,可是它所管理的数据是不稳定的,并且若是在关机以前没有进行保存,那么全部的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你须要使用SELECT表达式来选择和操控数据的时候很是有用。
  MEMORY主要用于那些内容变化不频繁的代码表,或者做为统计操做的中间结果表,便于高效地堆中间结果进行分析并获得最终的统计结果。

 

MERGE

 

  MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构彻底相同。MERGE表自己没有数据,对MERGE类型的表进行查询、更新、删除的操做,就是对内部的MyISAM表进行的。 MERGE用于将一系列等同的MyISAM表以逻辑方式组合在一块儿,并做为一个对象引用它。MERGE表的优势在于能够突破对单个MyISAM表大小的限制,经过将不一样的表分布在多个磁盘上,能够有效的改善MERGE表的访问效率。
  MyISAM与InnoDB的区别
  InnoDB和MyISAM是许多人在使用MySQL时最经常使用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差异为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,可是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
  MyISAM表还支持3中不一样的存储格式:  静态表动态表压缩表 
  静态表是默认的存储格式,静态表中的字段都是非变长的字段,优势是:存储很是迅速容易缓存,出现故障容易恢复缺点是:占用的空间一般比动态表多。(注意: 在存储时,列的宽度不足时,用空格补足,当时在访问的时候并不会获得这些空格) 
  动态表的字段是变长的,优势是:占用的空间相对较少,可是频繁地更新删除记录会产生碎片,须要按期改善性能,而且出现故障的时候恢复相对比较困难。 
  压缩表占用磁盘空间小,每一个记录是被单独压缩的,因此只有很是小的访问开支。 
  InnoDB存储方式为两种:使用共享表空间存储 、使用多表空间

相关文章
相关标签/搜索