MySQL两种引擎的比较

MyISAM,InnoDB主要区别:mysql

  1.MyISAM是非事物安全的,InnoDB是事物安全的。sql

    事物安全的特色为更安全,遇到问题会自动恢复或从备份加事物日志回复,若是更新失败,你的全部改变都变回原来。数据库

    非事物安全的优势为更快,所需的磁盘空间更小,执行更新时须要的内存更小,可是全部发生的改变都是永久的。安全

  2.MyISAM锁的粒度是表级的,InnoDB支持行级锁以及表级,默认状况下是采用行级锁。并发

    数据库引擎具备多粒度锁定,容许一个事务锁定不一样类型的资源。 为了尽可能减小锁定的开销,数据库引擎自动将资源锁定在适合任务的级别。 锁定在较小的粒度(例如行)能够提升并发度,但开销较高,由于若是锁定了许多行,则须要持有更多的锁。 锁定在较大的粒度(例如表)会下降了并发度,由于锁定整个表限制了其余事务对表中任意部分的访问。 但其开销较低,由于须要维护的锁较少。高并发

  3.MyISAM支持全文类型索引,InnoDB不支持(以前mysql索引

    mysql索引有四种类型:主键索引、惟一索引、普通索引和全文索引。经过给字段添加索引能够提升数据的读取速度,提升项目的并发能力和抗压能力。索引优化是mysql中的一种优化方式。索引的做用至关于图书的目录,能够根据目录中的页码快速找到所需的内容。优化

    主键索引: 主键是一种惟一性索引,但它必须指定为PRIMARY KEY,每一个表只能有一个主键。spa

    惟一索引: 索引列的全部值都只能出现一次,即必须惟一,值能够为空。日志

    普通索引 : 基本的索引类型,值能够为空,没有惟一性的限制。 

    全文索引: 全文索引的索引类型为FULLTEXT。全文索引能够在varchar、char、text类型的列上建立。能够经过ALTER TABLE或CREATE INDEX命令建立。对于大规模的数据集,经过ALTER TABLE(或者CREATE INDEX)命令建立全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6以后支持了全文索引。

  4.InnoDB支持外键,MyISAM不支持。

应用场景(简单归纳):

  MyISAM管理非事物表,提供高速存储和检索以及全文搜索的能力,若是在应用中执行大量的select操做,应选用MyISAM。

  InnoDB用于事物处理,具备ACID(原子性,一致性,隔离性,持久性)事物支持等特性,若是在应用中大量使用insert和update操做,应选用InnoDB。

  固然具体的选用仍是要看具体的项目需求来定,不能简单的只看这几个方面。

相关文章
相关标签/搜索