mysql两种引擎Innodb和MyIasm

 

Innodb提供了数据库事务的支持,并实现了sql标准的四种隔离级别,该引擎还提供了航迹锁和外键约束,它的设计目标是处理大容量数据库系统,它本身就是基于Mysql后台的完整数据库系统,Mysql运行时INnodb会在内存中建立缓冲池,用于缓存数据和索引,但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,select count(*) from  table时需要扫描全表,需要使用数据库事务时,该引擎是首选,由于锁的粒度更小,写操作不会锁定全表,所以在并发高时,使用Innodb引擎会提升效率,但是使用行级锁也不是绝对的,如果在执行sql语句时Mysql能确定扫描的范围,InnoDb同样会锁全表。

MyIASMysql是mysql默认的引擎,但是它没有提供对事物的支持,也不支持行级锁和外键,因此当insert(插入)update(更新)数据时即写操作需要锁定整个表,效率会低一些,不过和InnoDb不同,MyIASMysql中存储了表的行数,select count(*) from table时只需要直接读取保存好的值,不需要进行全表扫描,如果表的度操作远远多于写操作且不需要事务的支持,那么MyIASM也是很好的选择。

 

主要区别:

1.MyIASM是非事务安全的,而InnoDb是事务安全的

2.MyiASM锁的粒度是表级的,而InnoDB支持行级锁
3.MyIASM支持全文类型索引,而InnoDb不支持全文索引
4.MyIASM相对简单,效率上优于InnoDb,小型应用可以考虑使用MyIASM
5.MyIASM表保存成文件形式,跨平台使用更加方便

 

应用场景:

1.MyIASM管理非事务表,提供高速存储和检索以及全文搜索能力,如果再应用中执行大量select(查询)操作,应该选MyIASM

2.InnoDb用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量的insert(插入)和update(更新)操作,应该选择INnoDb

关闭Innodb引擎方法

    关闭mysql服务:net stop mysql

     找到mysql安装目录下的my.ini 文件:

       找到default-storage-engine=INNODB改为default-storage-engine=MYISAM

       找到#skip-innodb改为skip-innodb

       启动mysql服务:net start mysql