Mysql 数据库中,最常用的两种引擎是innordb 和myisam。InnoDB 是Mysql 的默认存储引擎。
两者的区别:
1.事务处理上方面MyISAM:强调的是性能,查询的速度比InnoDB 类型更快,但是不提供事务支持。InnoDB:提供事务支持。 2.外键MyISAM:不支持外键,InnoDB:支持外键。
3.锁MyISAM:只支持表级锁,InnoDB:支持行级锁和表级锁,默认是行级锁,行锁大幅度提高了多用户并发操作的性能。innodb 比较适合于插入和更新操作比较多的情况,
而myisam 则适合用于频繁查询的情况。另外,InnoDB 表的行锁也不是绝对的,如果在执行一个SQL 语句时,MySQL 不能确定要扫描的范围,InnoDB 表同样会锁全表,例如:update table set num=1 where name like “%aaa%”。 4.全文索引MyISAM:支持全文索引,InnoDB:不支持全文索引。innodb 从mysql5.6 版本开始提供对全文索引的支持。
5.表主键MyISAM:允许没有主键的表存在。InnoDB:如果没有设定主键,就会自动生成一个6字节的主键(用户不可见)。 6. 表的具体行数MyISAM:select count(*) from table,MyISAM 只要简单的读出保存好的行数。因为MyISAM 内置了一个计数器,count(*)时它直接从计数器中读。InnoDB:不保存表的具体行数,也就是说,执行select count(*) from table 时,InnoDB要扫描一遍整个表来计算有多少行。