1 什么叫数据库共享锁[S]锁和[X]锁共享锁【S锁】 又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S 锁之前不能对A做任何修改。排他锁【X锁】 又称写锁。若事务T对数据...
分类:
其他好文 时间:
2015-04-28 11:11:20
阅读次数:
122
为什么需要锁?因为数据库要解决并发控制问题。在同一时刻,可能会有多个客户端对Table1.rown进行操作,比如有的在读取该行数据,其他的尝试去删除它。为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念。锁的分类从对数据操作的类型(读\写)分读锁(共享锁):针对同一块数据,多个读操作可以同时进行而不会互相影响。写锁(排他锁):当当前写操作没有完成前,它会阻断其他写锁和读锁。...
分类:
数据库 时间:
2015-04-25 22:49:14
阅读次数:
333
1.共享锁只用于表级,排他锁用于行级。2.加了共享锁的对象,可以继续加共享锁,不能再加排他锁。加了排他锁后,不能再加任何锁。3.比如一个DML操作,就要对受影响的行加排他锁,这样就不允许再加别的锁,也就是说别的会话不能修改这些行。同时为了避免在做这个DML操作的时候,有别的会话执行DDL,修改表的定...
分类:
其他好文 时间:
2015-04-16 00:59:54
阅读次数:
182
共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其...
分类:
其他好文 时间:
2015-04-03 09:11:47
阅读次数:
121
1.RR隔离级别:在此隔离级别下, DB2会锁住所有相关的纪录。在一个SQL语句执行期间,所有执行此语句扫描过的纪录都会被加上相应的锁。具体的锁的类型还是由操作的类型来决定,如果是读取,则加共享锁;如果是更新,则加独占锁。由於会锁定所有為获得SQL语句的结果而扫描的纪录,所以锁的数量可能会很庞大,这...
分类:
数据库 时间:
2015-03-20 20:18:35
阅读次数:
240
当我们在操作数据库的时候,无论是查询还是修改数据库的操作我们都习惯使用using(var db=new XXXDB()){},但是如果仅仅是做查询,最好是使用NoLock,因为NoLock使用的是共享锁,可以减少死锁发生的机率。从上图中代码可以看到,NoLock的原理实际上是,将事务的隔离等级改.....
分类:
其他好文 时间:
2015-03-05 12:54:34
阅读次数:
131
原文: 阻塞与死锁(三)——死锁的定位及解决方法 死锁所在的资源和检测: 在SQL Server的两个或多个任务中,如果某个任务锁定了其他任务试图锁定的资源。会造成这些任务的永久阻塞,从而出现死锁。 下图为例: l 事务T1获得了行R1的共享锁。 l 事务T2获得了行R2的共享锁。 l 然后事务T1...
分类:
其他好文 时间:
2015-03-05 12:24:17
阅读次数:
178
一、前言 数据库大并发操作要考虑死锁和锁的性能问题。这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server为例。二、锁的种类 共享锁(Shared lock)。例1:---...
分类:
数据库 时间:
2015-03-03 20:10:03
阅读次数:
182
上一篇《mysql metadata lock(一)》介绍了为什么引入MDL,MDL作用以及MDL锁导致阻塞的几种典型场景,文章的最后还留下了一个小小的疑问。本文将更详细的介绍MDL,主要侧重介绍MDL的原理和实现。一般而言,商业数据库系统实现锁,一般将锁划分为读锁(共享锁)和写锁(排它锁),为.....
分类:
数据库 时间:
2015-02-27 18:22:21
阅读次数:
197
原文:关于X锁的问题--由select+X锁是否持有到事务结束的误区前言:看了宋桑的文章《一次意外的X锁不阻塞问题》,结合本人的测试,说明一下我对select中使用X锁是否会持有到事务结束产生的误区; 详情不多说了,详见宋桑的《一次意外的X锁不阻塞问题》和《消失的共享锁》,对Select+X锁和Se...
分类:
其他好文 时间:
2015-02-12 18:09:43
阅读次数:
170