相比较InnoDB和Myisam两种引擎:
1、批量插入的速度来说Mysiam比InnoDB高,Mysiam多用来处理批量数据。
2、InnoDB支持事务保障事务安全,而Myisam没有,这是选择InnoDB的主要原因。(关于事务,一个事务对应一个完整的业务。拿手机银行转账为例,甲向乙转钱和乙收到钱是一个完整的业务,假如甲向乙转账,但是转失败了,乙没有收到钱,事务起到的作用就是在甲转失败的时候,让甲转钱这个指令失效,保障这个业务的完整性,不让不完整的事务运行成功。)
3、全文索引两者都支持,但是InnoDB5.5版本以后才支持全文索引。
4、锁存机制:Myisam是表锁,InnoDB是行锁。(表级锁: 每次操作锁住整张表;行级锁: 每次操作锁住一行数据。)
5、存储限制:Myisam没有,InnoDB是64TB。
6、外键:Myisam不支持,InnoDB支持,这也是选择后者的原因之一。由外键约束,可以多表操作。
总结InnoDB和Myisam特点
1、InnoDB特点
- 支持行锁,采用MVCC来支持高并发,有可能死锁
- 支持事务
- 支持外键
- 支持崩溃后的安全恢复
- 不支持全文索引
2、Myisam特点
- 不支持行锁(MyISAM只有表锁),读取时对需要读到的所有表加锁,写入时则对表加排他锁;
- 不支持事务
- 不支持外键
- 不支持崩溃后的安全恢复
- 在表有读取查询的同时,支持往表中插入新纪录
- 支持BLOB和TEXT的前500个字符索引,支持全文索引
- 支持延迟更新索引,极大地提升了写入性能 对于不会进行修改的表,支持 压缩表 ,极大地减少了磁盘空间的占用