概述
一.MyISAM
1.特点
1)支持表级别锁
2)查询速度快
3)不支持事务和外键
4)如果使用该数据库引擎,会生成三个文件:
.frm:表结构信息
.MYD:数据文件
.MYI:表的索引信息
二.InnoDB
1.InnoDB特点:
1)、支持事务
a.相对于MyISAM 查询慢一些
2)、数据多版本读取(InnoDB+MyISAM+ISAM)
3)、锁定机制的改进
行级别锁
4)、实现外键
三. InnoDB与MyISAM区别
- InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin transaction和commit之间,组成一个事务;
- InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MyISAM会失败;
- InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
- InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;
- InnoDB不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;5.7 已经支持
四.如何选择
- 是否要支持事务,如果是,选择InnoDB,如果不需要可以考虑MyISAM
- 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB。
- 系统崩溃后,MyISAM恢复起来更困难,能否接受;
- MySQL5.5版本开始InnoDB已经成为MySQL的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。
五.Memory存储引擎
1.特点
是一个将数据存储在内存中的存储引擎,不会 将任何数据存放在磁盘上,仅仅存放了一个表结构相关信息的.frm文件在磁盘上面,memory存储引擎实现页级锁定。
六.NDBCluster存储引擎
NDB存储引擎也叫NDBCluster存储引擎,主要用于MySQL Cluster分布式集群环境,Cluster是MySQL从5.0版本才开始提供的新功能。
七.MRG_MYISAM存储引擎
MRG_MYISAM存储引擎可以简单的理解为其功能就是实现了对结构相同的MyISAM表,通过一些特殊的包装对外提供一个单一的访问入口,以达到减小应用的复杂度的目的。要创建MERGE表,不仅仅基表的结构要完全一致,包括字段的顺序,基表的索引也必须完全一致。
八.FEDERATED存储引擎
FEDERATED存储引擎所实现的功能,和Oracle的DBLINK基本相似,主要用来提供对远程MySQL服务器上面的数据的访问接口。如果我们使用源码编译来安装MySQL,那么必须手工指定启用FEDERATED存储引擎才行,因为MySQL默认是不起用该存储引擎的。
九.ARCHIVE存储引擎
ARCHIVE存储引擎主要用于通过较小的存储空间来存放过期的很少访问的历史数据。ARCHIVE表不支持索引,通构定义文件过一个.frm的结,一个.ARZ的数据压缩文件还有一个.ARM的meta信息文件。由于其所存放的数据的特殊性,ARCHIVE表不支持删除,修改操
作,仅支持插入和查询操作。锁定机制为行级锁定。
十.CSV存储引擎
CSV存储引擎实际上操作的就是一个标准的CSV文件,他不支持索引。起主要用途就是大家有些时候可能会需要通过数据库中的数据导出成一份报表文件,而CSV文件是很多软件都支持的一种较为标准的格式,所以我们可以通过先在数据库中建立一张CSV表,然后将生成的报表信息插入到该表,即可得到一份CSV报表文件了。
11.PERFORMANCE_SCHEMA存储引擎
从MySQL 5.6 开始新增的PERFORMANCE_SCHEMA数据库的存储引擎是PERFORMANCE_SCHEMA,PERFORMANCE_SCHEMA在之前版本中就有,主要用于收集一些系统参数。
最后
以上就是拼搏哑铃为你收集整理的MySQL的存储引擎的全部内容,希望文章能够帮你解决MySQL的存储引擎所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复