InnoDB与Myisam引擎的区别和应用场景

    之前在面试的时候被问到这两种Mysql引擎的区别,当时只是回答mysql是行级的锁;其他的完全不知,懵逼了,所以做个简单的总结;

1.Mysql默认采用的是Myisam引擎;

2.Myisam不支持事务的,而Innodb支持事务的;默认Innodb的Autocommit是打开的,每条sql会封装成一个事务,自动提交,这样会影响速度,所以最好是把sql放在begin和commit之间,用一个事务去提交;

3.Innodb支持行级锁,Myisam不支持行级锁,支持整个表的锁;myisam在对同一个表进行读取和写的时候是互斥的,在并发的情况下,如果队列中既有读取也有写入数据的操作,优先的是写请求,即使是读的请求先到;所以myisam不适合有大量查询和修改并发的情况,那样查询进程会长时间阻塞;

4.Innodb支持外键,myisam不支持;

5.没有where的count(*)使用myisam比innodb快的多;因为myisam内置了 一个计数器,使用count(*)查询的时候直接从计数器中读取,而innodb必须全表扫描;

应用的场景:

1.myisam:做count比较多;插入不频繁,读取频繁;不需要事务;

2.innodb:对可靠性要求比较高,表更新和查询都相当频繁,并且行锁定的机会大;

猜你喜欢

转载自blog.csdn.net/xiaoguangtouqiang/article/details/79474595
今日推荐