InnoDB与MyISAM
在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。
MyISAM与InnoDB存储引擎的主要特点
MyISAM存储引擎的特点是:表级锁即发生数据更新时,会锁定整个表,以防止其他会话对该表中数据的同时修改所导致的混乱。这样做可以使得操作简单,但是会减少并发量、
不支持事务,支持全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;
InnoDB存储引擎的特点是:行级锁、事务安全(ACID兼容)、支持外键、不支持FULLTEXT类型的索引(5.6.4以后版本开始支持FULLTEXT类型的索引)。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。InnoDB是为处理巨大量时拥有最大性能而设计的。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。
MyISAM与InnoDB性能测试
下边两张图是官方提供的MyISAM与InnoDB的压力测试结果
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特性(例如外键)的表不适用。
要注意,创建每个表格的代码是相同的,除了最后的 TYPE参数,这一参数用来指定数据引擎。