mysqlMysql

存储引擎MyISAM与Innodb区别

2019-03-14  本文已影响11人  Mr_Arvin

1、事务支持
MyISAM不支持事务,而Innodb支持,InnoDB的AUTOCOMMIT默认是打开的.

begin
  sql语句
commit

2、存储结构
MyISAM:每个MyISAM在磁盘上存储成三个文件。
InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。

3、外键支持
MyISAM不支持外键,而Innodb支持。

4、 AUTO_INCREMENT
MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。
InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。

5、表锁差异
MyISAM只支持表级锁,Innodb支持事务和行级锁。

6、全文索引
MyISAM支持全文索引,Innodb不支持,但是可以用插件使之也支持全文索引。
全文索引是指对char、varchar和text中的每个词(停用词除外)建立倒排序索引。

MyISAM和InnoDB两者的应用场景:

  1. MyISAM管理非事务表,应用在不需要事务外键支持的情况下,需要执行大量的SELECT查询,可以选择。
  2. InnoDB用于事务处理应用程序,如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能。
上一篇下一篇

猜你喜欢

热点阅读