MySQL-常用引擎

一:引擎类型

1. InnoDB存储引擎

  是一个健壮的事务型存储引擎,该引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案,InnoDB还引入了行级锁定和外键约束。

  特点:

  1.更新:适合多重并发的更新请求;
  2.事务:支持标准事务;
  3.恢复:能够自动从灾难中恢复;
  4.外键:支持外键;
  5.支持自动增加列AUTO_INCREMENT属性。

2. MyISAM存储引擎

  其速度比InnoDB类型更快,不支持事务,不支持外键,崩溃后无法安全恢复。对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

  特点:

  1.不支持事务,不具备(原子性、一致性、分离性、永久性)特性;
  2.表锁定形式(更新时锁定整个表、虽然锁定的实现成本很小,但大大降低了并发性能);
  3.读写相互阻塞(写入的时候阻塞读取、读取的时候阻塞写入、但是读取不会阻塞读取);
  4.读取速度快、占用资源比较少;
  5.不支持外键约束、只支持全文检索;
  6.是MySQL5.5.5版本之前的默认存储引擎。

二:如何选择

  大部分情况下,InnoDB都是正确的选择,可以简单地归纳为一句话”除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应优先选择InnoDB引擎”。

除非万不得已,否则不建议混合使用多种存储引擎,否则可能带来一系列复杂的问题,以及一些潜在的bug和边界问题,如果应用需要不同的存储引擎,请先考虑以下几个因素:

  事务:如果应用需要事务支持,那么InnoDB(或者XtraDB)是目前最稳定并且经过验证的选择。

  备份:如果可以定期地关闭服务器来执行备份,那么备份的因素可以忽略。反之,如果需要在线热备份,那么选择InnoDB就是基本的要求。

  恢复:MyISAM崩溃后发生损坏的概率比InnoDB要高很多,而且恢复速度也要慢。

  特有的特性:如果一个存储引擎拥有一些关键的特性,同时却又缺乏一些必要的特性,那么有时候不得不做折中的考虑,或者在架构设计上做一些取舍。

三:查看引擎

  show engines;

posted @ 2018-11-30 10:59  刘杨钊  阅读(198)  评论(0)    收藏  举报