MySQL存储引擎MyISAM与InnoDB的区别

MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;

InnoDB存储引擎的特点是:行级锁、事务安全(ACID兼容)、支持外键、不支持FULLTEXT类型的索引(5.6.4以后版本开始支持FULLTEXT类型的索引)。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。InnoDB是为处理巨大量时拥有最大性能而设计的。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。

InnoDB的吞吐量是MyISAM的几十倍

如何选择

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特性(例如外键)的表不适用。

InnoDB只有当使用索引进行检索是才会使用行级锁,否则与MYISAM一样使用表级锁


参考文章:
https://www.cnblogs.com/kevingrace/p/5685355.html
https://blog.csdn.net/xlgen157387/article/details/68978320

你可能感兴趣的:(MySQL)