日志文章

2008年09月17日 14:37:02

数据库-锁



1 OracleTM锁类型


锁模式

锁描述

解释

SQL操作



0

none







1

NULL



Select



2

SS(Row-S)

行级共享锁,其他对象只能查询这些数据行

Select for updateLock for updateLock row share

行级

3

SX(Row-X)

行级排它锁,在提交前不允许做DML操作

InsertUpdateDeleteLock row share

4

S(Share)

共享锁

Create indexLock share

表级

5

SSX(S/Row-X)

共享行级排它锁

Lock share row exclusive

6

X(Exclusive)

排它锁

Alter tableDrop ableDrop indexTruncate table Lock exclusive






l      
行共享锁定:一般通过select for update语句隐式获得行共享锁定,在oracle中你也可以通过lock table in row share mode语句显式获得行共享锁定。行共享锁定并不防止对数据行进行更改的操作,但是可以防止其它会话获取独占性数据表锁定。允许进行多个并发的行共享和行独占性锁定,还允许进行数据表的共享或者采用共享行独占锁定;
l       行独占锁定:通过一条insertupdatedelete语句隐式获取,或者通过一条lock table in row exclusive mode语句显式获取。这个锁定可以防止其它会话获取一个共享锁定、共享行独占锁定或独占锁定;
l       表共享锁定:通过lock table in share mode语句显式获得。这种锁定可以防止其它会话获取行独占锁定(insertupdatedelete,或者防止其它表共享行独占锁定或表独占锁定,它允许在表中拥有多个行共享和表共享锁定。该锁定可以让会话具有对表事务级一致性访问,因为其它会话在你提交或者回溯该事务并释放对该表的锁定之前不能更改这个被锁定的表;
l       表共享行独占:通过lock table in share row exclusive mode语句显式获得。这种锁定可以防止其它会话获取一个表共享、行独占或者表独占锁定,它允许其它行共享锁定。这种锁定类似于表共享锁定,只是一次只能对一个表放置一个表共享行独占锁定。如果a会话拥有该锁定,则b会话可以执行select for update操作,但如果b会话试图更新选择的行,则需要等待;
l       表独占:通过lock table in exclusive mode显式获得。这个锁定防止其它会话对该表的任何其它锁定。





http://www.4studio.cn/www/51/2008-04/2672.html

Tags: 数据库锁  

类别: 数据库 |  评论(0) |  浏览(1887) |  收藏
发表评论
看不清楚,换一张