如何选择合适的MySQL存储引擎-阿里云开发者社区

开发者社区> lzhdim> 正文

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

简介:   MySQL有多种存储引擎:   MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。
+关注继续查看

  MySQL有多种存储引擎:

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

  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存储引擎接受但不存储数据,并且检索总是返回一个空集。

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

  当你创建一个新表的时候,你可以通过添加一个ENGINE 或TYPE 选项到CREATETABLE语句来告诉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 greatperformance |

  | 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 |

  +------------+---------+----------------------------------------------------------------+


 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《MySQL技术内幕:InnoDB存储引擎第2版》——3.6 InnoDB存储引擎文件
本节书摘来自华章计算机《MySQL技术内幕:InnoDB存储引擎第2版》一书中的第3章,第3.6节,作者:姜承尧著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1621 0
mysql存储过程
此存储过程实例,主要注意 在存储过程中 if 语句的使用,已经如果存在则不添加 not exists的使用, insert into table_name(column1) select column1 from table_name2 where colunm2=’condition1’ and not exists (select 1 from table_na
929 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3975 0
mysql 存储过程,以及mybatis如何调用
说道存储过程,很多人都知道,但是真正用的人其实很少,但是在某些必要的场景,是必须使用的,虽然可以使用java代码解决,但是效率性能远不及存储过程 曾经在sqlserver 以及pgadmin上用过,mysql还真没使用过,今天遇到这样的场景那就使用一次吧 场景:订单自动失效,定时任务跑批的时候会...
793 0
详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎
最近业务上有要求,要实现类似oracle 的dblink         linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/mysql/my.cnf windows 版本  Server version: 5.6.21-log MySQL Community Server (GPL) 修
1846 0
Mybatis调用Mysql存储过程
在我的后台系统中,今天需要使用到存储过程。存储过程还真没写过,今天就写了个存储过程。使用在后台中。 其实这个接口功能  是涉及几张表的修改,删除,新增的。就写个一个存储过程。 存储过程: 1 CREATE PROCEDURE `sp_combine_admin_group`(IN `g...
720 0
MySql存储过程总结
原文:MySql存储过程总结       之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的存储过程写了一部分,写一下工作总结。这里没有给出数据库结构,不讨论SQL语句的细节,主要探讨存储过程语法,适合有基础的人。
719 0
+关注
lzhdim
人在20岁以意志力著称,在30岁以智慧取胜,在40岁则靠的是理智的判断。 一个人只有时刻保持幸福快乐的感觉,才会使自己更加热爱生命,热爱生活。只有快乐,愉快的心情,才是创造力和人生动力的源泉;只有不断自己创造快乐,与自己快乐相处的人,才能远离痛苦与烦恼,才能拥有快乐的人生。
512
文章
4
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载