1、 事务处理
innodb支持事务功能,myisam 不支持。
Myisam的执行速度更快,性能更好。
不走索引的情况:
InnoDB:
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件
5. InnoDB不支持FULLTEXT类型的索引(5.6版本已经支持)
6.旧版本里对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引
2、锁机制不同
InnoDB 支持行级锁,myisam为表级锁。
注意:如果查询不是通过索引访问的,那就是 通过简单的遍历所有行得到目标的,那就会给整个表加上锁
如: update table set num = 10 where username like "%test%";
3、查询表的行数不同
MyISAM:
select count(*) fromtable,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的
InnoDB
:
InnoDB中不保存表的具体行数,也就是说,执行select count(*) fromtable时,InnoDB要扫描一遍整个表来计算有多少行
4、物理结构不同
MyISAM :每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义。
数据文件的扩展名为.MYD (MYData)。
索引文件的扩展名是.MYI(MYIndex)
5. InnoDB不支持FULLTEXT类型的索引(5.6版本已经支持)
6.旧版本里对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引