MySQL默认存储引擎的变迁数据库
在MySQL 5.1以前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5以后的版本中,默认的搜索引擎变动为InnoDB。性能
MyIASM引擎搜索引擎
1.写入操做是锁住全表、不支持数据库事务、也不支持外键。 url
2.MyISAM会保存好具体的行数
spa
3.MyISAM使用的所有都是非汇集索引,能够不定义“主键”操作系统
4.MyISAM中的索引为B-Tree结构.net
InnoDB引擎日志
1.提供了“行锁”、支持数据库事务、提供了外键服务blog
注意:“行锁”的使用是有条件的,即where 查询的关键字必定被上了索引,且必定要明确(不能用模糊查询)。索引
若是不知足,这两个条件InnoDB仍是会锁住全表。
2.Innodb不会保存行数,使用count(*)时,会搜索全表。
3.Innodb由汇集索引和辅助索引(非汇集索引)构成,但必须有一个汇集索引,且默认与主键绑定。
建表的时候能够不显示的指定主键,可是则MySQL系统会自动选择一个能够惟一标识数据记录的列做为主键,
若是不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段做为主键,这个字段长度为6个字节,类型为长整形。
4.Innodb的汇集(主键)索引为B+Tree,其他为B-Tree
MyISAM与InnoDB构成上的区别
(1)每一个MyISAM在磁盘上存储成三个文件:
第一个文件的名字以表的名字开始,扩展名指出文件类型,.frm文件存储表定义。
第二个文件是数据文件,其扩展名为.MYD (MYData)。
第三个文件是索引文件,其扩展名是.MYI (MYIndex)。
(2)基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操做系统文件的大小,通常为 2GB
适用场景:
MyISAM适合:
(1)作不少count 的计算;
(2)插入不频繁,查询很是频繁,若是执行大量的SELECT,MyISAM是更好的选择;
(3)没有事务。
InnoDB适合:
(1)可靠性要求比较高,或者要求事务;
(2)表更新和查询都至关的频繁,而且表锁定的机会比较大的状况指定数据引擎的建立;
(3)若是你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表;
(4)DELETE FROM table时,InnoDB不会从新创建表,而是一行一行的 删除;
(5)LOAD TABLE FROM MASTER操做对InnoDB是不起做用的,解决方法是首先把InnoDB表改为MyISAM表,导入数据后再改为InnoDB表,可是对于使用的额外的InnoDB特性(例如外键)的表不适用。
参考网址:https://blog.csdn.net/xlgen157387/article/details/68978320#commentBox