如何选择合适的MySQL存储引擎

MySQL有多种存储引擎:mysql

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。sql

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

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

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

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

◆ InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操做系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你能够按照喜爱经过配置MySQL来容许或禁止任一引擎。分布式

◆ EXAMPLE存储引擎是一个“存根”引擎,它不作什么。你能够用这个引擎建立表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。一样,它的主要兴趣是对开发者。ide

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

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

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

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

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

当你建立一个新表的时候,你能够经过添加一个ENGINE 或TYPE 选项到CREATE TABLE语句来告诉MySQL你要建立什么类型的表:

CREATE TABLE t (i INT) ENGINE = INNODB;

CREATE TABLE t (i INT) TYPE = MEMORY;

虽然TYPE仍然在MySQL 5.1中被支持,如今ENGINE是首选的术语。

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

下述存储引擎是最经常使用的:

◆ 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> show engines;+------------+---------+----------------------------------------------------------------+| Engine     | Support | Comment                                                        |+------------+---------+----------------------------------------------------------------+| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | | MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | | InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | | BerkeleyDB | NO      | Supports transactions and page-level locking                   | | BLACKHOLE | NO      | /dev/null storage engine (anything you write to it disappears) | | EXAMPLE    | NO      | Example storage engine                                         | | ARCHIVE    | NO      | Archive storage engine                                         | | CSV        | NO      | CSV storage engine                                             | | ndbcluster | NO      | Clustered, fault-tolerant, memory-based tables                 | | FEDERATED | NO      | Federated MySQL storage engine                                 | | MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | | ISAM       | NO      | Obsolete storage engine                                        | +------------+---------+----------------------------------------------------------------+
相关文章
相关标签/搜索