首页 > 数据库技术 > 详细

MyISAM和Innodb的区别

时间:2020-02-29 21:17:23      阅读:78      评论:0      收藏:0      [点我收藏+]

MyISAM和Innodb是mysql数据库前后的两种默认数据存储引擎,那么两者究竟有什么区别呢?

一,首先是在锁的方面

MyISAM之可以使用表级锁,不支持使用行级锁。这是什么意思呢?

在MyISAM数据库执行读请求期间,会默认对该请求加上共享锁(读锁),在这一个锁级别下,用户可以进行读共享不可以进行写请求。当然我们也可以使用Local tables <tableName> read|write来将表的锁住,阻塞其他的读或者写请求解锁是<unlock tables>。

同样如果MyISAM还自带排他锁,也就是写锁。意思就是当数据库在执行写请求时不允许用户其他请求的干扰。也就是上了共享锁之后可以继续上共享锁,但是上了写锁之后不能施加任何锁。

Innodb默认使用行级锁,但是也支持表级锁。实际上这也是Innodb能够保证事务不出问题的真正原因。

Innodb是支持事务的,所以我们可以通过session取锁暂时不自动提交的方式模拟并发访问的过程。

Innodb加锁默认的是加二级锁,我们可以在使用set autocommi=0关闭当前事务的自动提交,这样就需要在执行事务之前加锁(lock in share mode为手动加共享锁,for update 为手动加排他锁,commit之后进行统一解锁。)比如  我们可以select * from <tableName> where id =3 lock in share mode。只要不执行commit,这行就会永远的锁下去,同理,我们也可以使用for update为他手动添加排他锁。commit时,锁才会被释放。

二,count运算上的区别:

因为MyISAM有meta-data,所以全量查询很快,但是INNODB没有
三,事务与安全:

MyISAM性能会更快,但是不支持事务,INNODB支持事务,所以也支持事务相关的,隔离,回滚,等等的ACID操作
四,MyISAM不支持外键,INNODB支持

MyISAM和Innodb的区别

原文:https://www.cnblogs.com/ffdsj/p/12386051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!