主要区别: 1).MyISAM是非事务安全型的,而InnoDB是事务安全型的。 2).MyISAM锁的粒度是表级,而InnoDB支持行级锁定。 3).MyISAM支持全文类型索引,而InnoDB不支持全文索引。 4).MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyIS ...
分类:
数据库 时间:
2016-09-09 15:12:39
阅读次数:
270
1. 悲观锁(加的是表级锁) 一方:查询语句加 for update;另一方:查询语句加 for update; 当进行更新语句的时候,另一方不能进行更新操作 2. 乐观锁 更新语句设置版本号,在指定版本中更新数据 一方:update account set money=money-200,vers ...
分类:
其他好文 时间:
2016-09-04 13:04:01
阅读次数:
188
项目上的另外一个需求是: 在做统计的时候需要将当前表锁定不能更新当前表记录 直接上代码 在Thread 2中 先sleep 1s 保证了Thread 1先执行 然后在Thread 1执行结束之后,Thread 2才能执行更新操作。 执行结果如下: Thread 1 commit Thu Sep 01 ...
分类:
数据库 时间:
2016-09-01 18:09:54
阅读次数:
186
读写锁:. 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 对MyISAM表的读 ...
分类:
数据库 时间:
2016-08-24 19:10:57
阅读次数:
221
死锁 存在于行级锁 存在的条件 1、资源只能同时被一个线程占有 2、资源占有不能被强制剥夺 3、请求和保持占有(在请求占有资源的同时能保持现有资源的占有) 4、死循环(一般做程序的人最关注的点) 一到三点都是mysql innoDB所有的特性,只有四是我们可以控制的。 实际的场景1: 下面这张图是事 ...
分类:
数据库 时间:
2016-08-18 21:26:46
阅读次数:
725
InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。 背景知识 事务(Transaction)及其ACID属性 事务 ...
分类:
数据库 时间:
2016-08-13 11:15:49
阅读次数:
226
有人问,MySQL里Update时条件列没有索引,产生的是表级锁,而Oracle里是行级锁。下面来对比下MySQLINNODB引擎和Oracle的行锁机制:INNODBINNODB表是索引组织的表,主键是聚集索引,非主键索引都包含主键信息。INNODB默认是行锁。INNODB行锁是通过给索引项加锁来实现的,即只有..
分类:
数据库 时间:
2016-08-12 21:53:50
阅读次数:
165
1.之前遇到过一个场景:有一个用户登录一直失败,但是其他用户却可以正常登录,后来测试借口发现在登录时更新这个用户的登录时间时,一直没有反应然后超时了。因为innordb是行级锁的所以就想到了是这条用户的信息被锁住了。 2.解决方案: 执行语句:SELECT * FROM information_sc ...
分类:
数据库 时间:
2016-08-04 10:20:15
阅读次数:
206
一、MySQL的并发控制1、MySQL的并发控制在服务器层和存储引擎层完成锁:lock读锁:共享锁,可以几个用户同事读取,但不能写写锁:独占锁,锁粒度:锁表时锁表的范围(比如一个用户读前三行,一个用户写入最后一行)表级锁:innodb表级锁行级锁:myisa行级锁(锁控制复杂)死锁:..
分类:
数据库 时间:
2016-07-19 11:29:04
阅读次数:
229
Mysql 的InnoDB存储引擎实现的不是简单的行级锁,实现的是MVCC,多版本并发控制,可以理解成行级锁的一个变种。 InnoDB的MVCC是通过在每行纪录后面保存两个隐藏的列来实现的。这两个列,一个是保存了行的创建时间,一个是保存了行的过期时间(删除时间),时间是用的系统的版本号来存储的。 在 ...
分类:
数据库 时间:
2016-07-09 16:11:55
阅读次数:
154