InnoDB引擎和MyISAM引擎的性能对比

介绍:InnoDB和MyISAM作为MySQL数据库中最主要最常用的存储引擎,各有所长。MySQL5.5版本之前,MyISAM是MySQL默认的存储引擎,5.5之后,MySQL的默认引擎变成了InnoDB。对于这两种存储引擎的选择,根据项目应用特点来权衡。(建议尽量不要混合使用多种存储引擎,容易带来更复杂的问题)。

MyISAM:支持全文索引,基于分词创建的索引,利于复杂的查询,但不是事务安全的,也不支持外键。每张MyISAM表存放在3个文件中:frm文件存放表结构;数据文件是MYD(MYData);索引文件是MYI(MYIndex)。对于MyISAM表,它可以手工或自动执行检查或修复操作。

InnoDB:是事务型引擎,支持回滚,具有奔溃恢复能力,多版本并发控制(MVCC)、支持ACID、支持行级锁(不是绝对的,一个语句没有用到索引,InnoDB表同样会锁全表)。
InnoDB工作原理:就是把所有数据放到内存,被用户读写,这样就大大增加性能,内存中读写比磁盘中快得多啊!它的设计理论就是充分利用内存,减少磁盘I/O使用率。

MyISAM和InnoDB之间的主要区别有以下几点

  • MyISAM是非事务安全型,InnoDB是事务安全的,也就是ACID事务支持;
  • MyISAM是表级锁,锁开销小,而InnoDB支持行级锁,锁管理开销大,但是支持更好的并发写操作;
  • MyISAM支持全文索引,InnoDB不支持,但是5.6之后提供支持了;
  • MyISAM简单,管理方便,因此效率上优于InnoDB,小应用可以考虑用MyISAM;
  • MyISAM表是保存成文件的形式,在跨平台的数据转移中使用MyISAM可以省去不少麻烦;
  • InnoDB比MyISAM更加安全,可以在保证数据不丢失的情况下,切换非事务表到事务表。

总结:其实有两个选择,一般都是从安全和性能两方面来考虑,技术在开始一般对性能要求低,但是随着业务、数据慢慢增加,不得不考虑性能了。

你可能感兴趣的:(数据库相关)