InnoDB和MyISAM的区别
索引
InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高,但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据.因此,主键不应该过大,否则其他索引也会很大.而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的.
事务
InnoDB 支持事务功能,对于 InnoDB 每一条 SQL 语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条 SQL 语言放在 begin 和 commit 之间,组成一个事务.
MyISAM 不支持,也因此执行速度更快,性能更好.
锁机制
InnoDB 为行级锁,myisam 为表级锁.
注意:当数据库无法确定,所找的行时,也会变为锁定整个表.
如:
1 | update table set num = 10 where username like "%test%"; |