myisam 和 innodb的区别

一、 首先、MYISAM和INNODB是在使用MYSQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为;MYISM类型不支持事务处理,而InnoDB类型支持。MYISAM类型的表强调的是性能,其执行行数度,比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部建等高级数据库功能。

 1、InnoDB不支持FULLTEXT类型的索引。

 2、InnoDB中不保存表的具体行数,也就是说执行select count(*)from table时, InnoDB要扫描一遍整个表来计算有多少行,但MYISAM只是要简单的读出保存好的行数即可。注意的是当count(*)语句中包含where条件时,两种表的操作是一样的。

 3、DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

 4、对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MYISAM表中,可以和其它字段一起建立联合索引。

 5、InnoDB表的行锁也不是绝对的,假如在执行一个SQL语句时MYSQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%"

 二、如果需要全文索引,那么myisam是好的选择

     如果需要事务处理或外键,那么innoDB可能是比较好的方式。

     大尺寸的数据集趋向于选择InnoDB方式,因为其支持事务处理和故障恢复。

     

你可能感兴趣的:(的)