671   MySQL

目前接触了MySQL两种存储引擎:InnoDB和MyISAM,谈谈两者的一些区别

一,关于锁表机制:
MyISAM只支持表级锁,InnoDB即支持表级锁,也支持行级锁,默认就是行级锁。

表级锁:

定位表格时间比较短,所以加锁快,开销也小,不会出现死锁;由于表格只有一个,所有与该表格有关的数据操作都会产生锁竞争,并发量低;

行级锁:

定位行数据比较慢点,所以加锁慢,开销也大,而且会出现死锁;行锁可以同时在表格多处执行,锁竞争较低,并发量也高;

 

二,关于事物机制

MyISAM采用自动提交机制,执行即有效,无法回滚;InnoDB支持事务性操作,可以追踪操作记录和回滚,执行SQL后需要commit,也可以设定为自动提交;切记,InnoDB自动提交功能会影响性能,建议执行完所有SQL后才commit

 

三,关于查询

MyISAM支持全文FULLTEXT搜索,但是InnoDB不支持;其实MyISAM全文搜索对中文不太友好;

在没有where条件下,MyISAM使用count(*)比InnoDB快很多,因为InnoDB会扫描全表,但使用where两者效果差不多;

 

四,关于主键和外键

MyISAM不支持外键,但是InnoDB支持;InnoDB的主键比MyISAM大2倍;

 

 




Leave a Reply

Your email address will not be published. Required fields are marked *