MySQL存储引擎的应用与特点

数据库 MySQL
我们今天主要向大家描述的是如何正确选择MySQL存储引擎及MySQL数据库中各存储引擎的特点的描述,以下就是文章的主要内容描述。

以下的文章主要讲述的是MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述,希望你浏览完此文章你会在选择数据库存储引擎时带来一些帮助。以下就是文章的具体内容。

MySQL有多种存储引擎:

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

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

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的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存储引擎接受但不存储数据,并且检索总是返回一个空集。

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

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

 

  1. CREATE TABLE t (i INT) ENGINE = INNODB;  
  2. CREATE TABLE t (i INT) TYPE = MEMORY;  

 

虽然TYPE仍然在MySQL 5.1中被支持,现在ENGINE是***的术语。

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

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

MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的MySQL存储引擎之一。注意,通过更改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存储引擎,这点很重要。

 

  1. mysql> show engines;  
  2. +————+———+—————————————————————-+  
  3. | Engine | Support | Comment |  
  4. +————+———+—————————————————————-+  
  5. | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |  
  6. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables |  
  7. | InnoDB | YES | Supports transactions, row-level locking, and foreign keys |  
  8. | BerkeleyDB | NO | Supports transactions and page-level locking |  
  9. | BLACKHOLE | NO | /dev/null storage engine (anything you write to it disappears) |  
  10. | EXAMPLE | NO | Example storage engine |  
  11. | ARCHIVE | NO | Archive storage engine |  
  12. | CSV | NO | CSV storage engine |  
  13. | ndbcluster | NO | Clustered, fault-tolerant, memory-based tables |  
  14. | FEDERATED | NO | Federated MySQL storage engine |  
  15. | MRG_MYISAM | YES | Collection of identical MyISAM tables |  
  16. | ISAM | NO | Obsolete storage engine |  
  17. +————+———+—————————————————————-+ 

以上的相关内容就是对如何选择合适的MySQL存储引擎以及MySQL各主要存储引擎特点的介绍,望你能有所收获。

【编辑推荐】

  1. MySQL 修改密码的6个好用方案
  2. MySQL数据库访问妙招在Linux之下
  3. 从MySQL数据库表中来检索数据并不难
  4. 图解MySQL数据库安装与实际操作
  5. 卸载MySQL数据库的实现需要哪些项目?

 

责任编辑:佚名 来源: 博客园
相关推荐

2010-06-13 13:50:02

MySQL存储引擎

2010-06-02 10:09:29

MySQL 存储过程参

2019-01-14 14:25:25

MySQL存储逻辑架构

2018-06-14 10:44:59

MySQLMyISAMInnoDB

2010-05-21 16:10:28

2018-09-11 10:30:18

MySQL存储引擎数据备份

2017-03-15 15:45:33

MySQL存储引擎设计与实现

2010-05-14 17:44:47

MySQL数据库

2021-08-10 14:29:06

MySQL数据库存储

2010-05-21 15:53:30

2011-05-03 10:09:37

MySQL存储引擎

2018-04-04 09:26:40

存储负载应用

2018-08-31 10:53:25

MySQL存储引擎

2012-03-20 11:16:24

MySQLMyISAM

2009-02-02 09:31:25

MySQL存储引擎MyISAM

2010-11-23 11:27:53

MySQL MyISA

2017-12-29 08:26:28

存储引擎MySQL

2019-06-11 16:11:16

MySQLMyISAMInnoDB

2020-01-10 17:43:11

MySQL数据库文章

2023-11-09 09:26:22

MySQL存储引擎
点赞
收藏

51CTO技术栈公众号