标签:dml 产生 操作 body 对象 事务 border update 返回
分为排它锁和共享锁,当一个事务获得排它锁后,其它事务不能进行读或写操作,当一个事务获得共享锁后,其它事务可以进行读操作但不能写。
排它锁也叫写锁或x锁,共享锁叫读锁或s锁。
按保护内容来分:
dml锁,保护数据的完整和一致性,分tm锁(又称表级锁)和tx锁(又称行级锁或事务锁)
ddl锁,保护数据对象结构,比如table,index
内部锁,保护数据库内部结构,比如sga
当oracle进行insert、delete、update、select for update操作,oracle会自动申请tm锁,然后再申请tx锁,tx锁只能是排它锁,共享锁没有意义,oracle在表上面默认是共享锁。
TM锁包括了SS、SX、S、X等多种模式,在数据库中用1-6来表示。不同的SQL操作产生不同类型的TM锁。如下表:
1 | Select,有时会在v$locked_object出现。 |
2 | 相应的sql有:Select for update ,Lock xxx in Row Share mode,select for update当对 话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独 占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update 操作。 |
3 | 相应的sql有:Insert, Update, Delete, Lock xxx in Row Exclusive mode,没有commit 之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们 必须释放掉上一个才能继续工作。 |
4 | 相应的sql有:Create Index, Lock xxx in Share mode |
5 | 相应的sql有:Lock xxx in Share Row Exclusive mode,当有主外键约束时update /delete ... ; 可能会产生4,5的锁。 |
6 | 相应的sql有:Alter table, Drop table, Drop Index, Truncate table, Lock xxx in Exclusive mode |
标签:dml 产生 操作 body 对象 事务 border update 返回
原文地址:http://www.cnblogs.com/liluredhat/p/6712937.html